目录
序列:
1.索引:
2.标准类型运算:
(1)值比较:
(2)对象身份比较:is / is not
(3)布尔逻辑运算
3.通用序列类型操作:
(1)切片:
(2)重复(*):
(3)连接(+)
(4)判断成员(in /not in)
4.序列类型函数
(1)序列类型转换内建函数
list(iter):将可迭代对象iter转换成列表
tuple(iter):将可迭代对象iter转换成元组
str(obj): 将对象obj转换成字符串
(2)序列类型其他内建函数
字符串:
1.字符串的表示
2.字符串的创建
3.字符串的不可变
4.转移字符:
字符串常用方法
列表:
1.列表的表示
2.列表创建:
列表操作:
列表的方法:
元组:
元组的创建:
元组操作:
元组特性:
元组的作用:
range对象:
●序列包括:字符串 , 列表, 元组, range对象
●序列对象可迭代:能遍历该对象内部元素
共性内容
序列由多个成员构成,每个成员称为元素,每个元素可以通过索引(index)进行访问 []
对于有N 个元素的序列来说,第1个元素索引从0开始,最后一个元素索引为N-1
最后一个元素索引也可以是-1.倒数第二个元素索引为-2,.....
字符串:按照ASCII码大小依次比较
类型相互兼容的数据才可以进行比较(整数和字符串,列表和元组,字符串和列表等不允许比较)
每个对象都用一个唯一的id进行标识,对象身份比较是,比较的是id
bTuple是aTuple的引用,所以id相同
cTuple和aTuple值相同,但是id不同
(is 和==区别)
and /or /not
通过切片操作访问某个范围的多个元素
切片结果元素个数endindex-startindex
①.第一个索引值包括在切片中,第二个索引值不包括在切片中
②.startindex缺省,从开头开始遍历;endindex缺省,遍历到结尾
③.steps为负数,逆序遍历
例:
如果需要获得一个序列的多个副本,用重复运算符实现
该操作必须保证参与连接运算的两个序列是同一种类型的
类型不同连接产生异常
判断成员资格时,obj必须和sequence或sequence中元素类型一致
注意:
str()参数如果是元组或者列表,其成员是由字符组成的,str()函数的字符串并不能将其中的字符元素合并成一个单词
len():返回序列中元素个数
sorted():返回一个排好序的副本,原序列对象不变
reversed():返回一个迭代器,元素顺序是原序列nList的逆序
sum():序列数组求和,要求序列元素类型必须是整型或者浮点型
max()min()
max返回参数的最大值,如果参数只有一个对象,则返回该对象中的最大值元素;如果参数有若干对象,则返回有最大值元素的那个对象
min与max类似,换成最小
enumerate()
返回一个迭代器,把索引和元素打包成一个元组,如果没有start参数指定起始索引值,则默认从0开始,如果指定,则从指定开始,具体看例子
zip()
zip()函数拆分重组可迭代对象参数中对应的元素,返回的迭代器中的第i个元素是n个对象的第i个元素组成的元组
zip像一个拉链,把左排链齿和右排链齿两两组合
单引号,双引号,三引号。
单引号和双引号完全相同;
三引号是连续三个单引号构成,而且三引号标识的字符串可以直接使用单引号或双引号,可以多行表示一个字符串
使用三引号换行输入时,只需要敲回车,但在字符串中实际的储存内容为‘\n’转义字符
原始字符串操作符r:
python中使用原始字符串操作符r,用于不需要转义字符起作用的地方,特别在正则表达式,文件路径时使用较多
\n不再表示回车
(1)使用赋值语句,也可以直接输出
(2)切片+连接从其他字符串中截取片段构造新字符串
由于字符串对象类型是不可变的,所以当获得内存空间分配后该内存空间中的字符串内容是不可变的
字符串不能删除其中的字符,如果想要删除所以字符,则可以将一空字符串赋给原字符串变量
s.center(width):返回一个在width参数规定的宽度居中的字符串
s.count(子串):返回子串在字符串中出现次数
find(子串,开始,结束):返回子串在【开始,结束)中首次出现的位置,开始结束参数可选,如果不写默认从原字符串中查找,如果找不到返回-1
index():与find()类似,只不过index()找不到是会报错,具体看例子
s.join(iter):用字符串s连接可迭代对象的各个元素(必须是字符串)
s.replace(old,new)
原字符串找到old全部替换成new
spilt():
利用split()方法将输入的多个对象分隔开,默认分隔符是空白分隔符,也可以用其他分隔符
返回一个序列
strip()去掉字符串头部和尾部的空白字符
列表是可变的容器对象,且列表中的各元素可以是不同类型
列表可变
空括号:
赋值:
包含不同类型的对象
列表解析:生成一个序列并确定类型为列表
内建函数:
list(将其他可迭代对象转换成列表)
重复:
序列的操作适合于列表操作:索引,标准值运算,切片,重复,连接
append()将参数整个添加到列表尾部
extend():将每个元素单个添加到列表尾部
extend方法的参数要求是可迭代对象
copy():列表的copy方法属于浅拷贝,浅拷贝可以被简单理解为只复制复制父对象,不复制内部子对象
浅拷贝复制了一级元素,所以a的副本b可以自由修改b[0]值不会影响到a[0],由于没有复制二级元素,所以b[2][0]与a[2][0]是同一对象的引用,因此修改b[2][0]的值也会改变a[2][0]的值
如果想实现深拷贝,可用Copy模块中的deepcopy()函数
注意:如果使用赋值运算d=a,试图创建一个新的列表d,但此时变量d和a用的是同一个列表对象
pop():
不带参数删除列表最后一个元素
带参数的pop()删除列表中以参数值为索引值的元素
remove(x)删除列表中第一个元素值为x的数
reverse():把列表原地翻转
reversed():列表的内建函数,韩慧序列逆序排序后的迭代器,原列表内容不变
字符串和元组没有reverse方法(不可变),但有reversed方法
sort():
不带参数,列表基于值排序(由小到大)
直接对原列表排序,改变了原列表中元素的顺序
带参数,基于值由大到下排序,具体看例子
按照列表中元素长度排序
元组用圆括号表示,和列表相似,但元组元素不可变,列表元素可变
元素用逗号隔开赋给一个变量也可以表示元组
序列通用操作和函数对列表一样适用
但元组不可变
(不能适用赋值,不能使用reverse(),sort(),.......)
但元组可以适用sorted()函数,返回排序新列表,原列表内容不变
元组的可变元素可变:
索引值为2的元素是个列表,作为元组的元素不能改变,但是作为列表中的元素,可以通过btuple[2][0]改变
函数返回一组值,未明确定义列表还是元组
用range对象生成range对象,执行时一边计算一边产生值(类似一个生成器),生成一个不可变的整数序列
start是起始值(缺省为0),end是终值(不包含),与切片中的起始值和终值含义相似,
step为步长,缺省为1(不能为0,否则为空序列),如果start end step矛盾是产生空序列