变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符.
# Python 中的变量赋值不需要类型声明。
# 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
# 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
# 等号(=)用来给变量赋值。
# 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
Python的字符串内建函数
Python的字符串常用内建函数如下:
将字符串的第一个字符转换为大写 |
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 |
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
如果字符串只包含数字则返回 True 否则返回 False.. |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
如果字符串中只包含数字字符,则返回 True,否则返回 False |
如果字符串中只包含空白,则返回 True,否则返回 False. |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
转换字符串中所有大写字符为小写. |
截掉字符串左边的空格或指定字符。 |
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
返回字符串 str 中最大的字母。 |
返回字符串 str 中最小的字母。 |
类似于 find()函数,不过是从右边开始查找. |
类似于 index(),不过是从右边开始. |
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
删除字符串字符串末尾的空格. |
有指定值,则仅截取 num+1 个子字符串 |
False,不包含换行符,如果为 True,则保留换行符。 |
检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
将字符串中大写转换为小写,小写转换为大写 |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 |
转换字符串中的小写字母为大写 |
返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
# 注意: 后面的例子都是以这里的变量为模板此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
与字符串的索引一样,列表索引从0开始,列表可以进行截取、组合等
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:
# 以上实例输出结果为: # 以上实例输出结果为:可以使用del 语句来删除列表的元素,如下实例
# 以上实例输出结果为 # 当然,也可以使用remove()方法删除Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
Python列表的截取与拼接及嵌套列表
Python的列表截取与字符串操作类型,如下所示
# 以上实例输出结果为 # 以上实例输出结果为:# 以上实例输出结果:加号 + 是列表连接运算符,星号* 是重复操作,如下实例:
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:
也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。
列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。
# 我们还可以对他进行幂计算: # 可以对之前同样序列每一个元素逐个调用某方法: # 我们还可以使用if子句作为过滤器: # 以下是一些关于循环和其他技巧的演示: # 列表推导式可以使用复杂表达式或嵌套函数:这里我们将列表中每个数值乘三,获得一个新的列表:
# 以下实例将3X4的矩阵列表转换为4X3列表 # 以下实例也可以使用以下方法实现:Python的列表还可以嵌套
以下实例展示了3X4的矩阵列表
# 元组与字符串类似,下标索引从0开始,可以进行截取,组合等.元组是另一个数据类型,类似于List(列表)
元组用()标识,内部元素用逗号隔开,但使元组不能二次赋值,相当于只读列表
元组是不允许更新的,而列表是允许更新的
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
元组可以使用下标索引来访问元组中的值,如下实例
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例
元组中的元素是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例
# 以上实例元组被删除后,输出变量会有异常信息,输出如下所示:与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:元组:
反向读取;读取倒数第二个元素 |
截取元素,从第二个开始后的所有元素。 |
Python3元组包含了以下内置函数
所谓元组的不可变指的是元组所指向的内存中的地址地址值不同.
不可变并不是坏事,比如我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。同样地,如果我们操作一个从函数返回的元组,可以通过内建List()函数把它转换成一个列表。
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值(key=> value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号中({}),格式如下所示:
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
# 以下为实例输出结果
能删单一的元素也能清空字典,清空只需一项操作
显示删除一个字典用del命令,如下实例:
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
2) 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
# 以上实例输出结果:字典内置函数&方法
Python包含了以下内置函数:
len(dict) 计算字典元素个数,即键的总数。 |
str(dict) 输出字典,以可打印的字符串表示。 |
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 |
Python字典包含了以下内置方法:
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
将元素x添加到a集合中
将元素x从集合a中移出去,如果不存在就会报错
计算集合元素个数和清空集合
# 判断元素是否在集合中存在在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来:
# 如果要反向遍历一个序列,首先指定这个序列,然后调用reversed()函数: # 按顺序遍历一个序列,使用sorted()函数返回一个已排序的序列,并不修改原值:有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值.
将对象 x 转换为字符串 |
将对象 x 转换为表达式字符串 |
用来计算在字符串中的有效Python表达式,并返回一个对象 |
将序列 s 转换为一个元组 |
将序列 s 转换为一个列表 |
创建一个字典。d 必须是一个序列 (key,value)元组。 |
将一个整数转换为一个字符 |
将一个整数转换为Unicode字符 |
将一个字符转换为它的整数值 |
将一个整数转换为一个十六进制字符串 |
将一个整数转换为一个八进制字符串 |
* 变量无须事先声明,也不需要指定类型
* 编程中一般无须关心变量的存亡,也不用关心内存的管理
* Python使用引用计数记录所有变量的引用数.(引用计数器,垃圾回收机制)
* 当变量引用数变为0,他就可以被垃圾回收GC
* 计数增加: 赋值给其他变量就增加引用计数,例如x=3,y=x
* 函数运行结束时,局部变量会被自动销毁,对象引用计数减少
* 有关性能的问题,需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求.