浏览 1890
扫码
通用序列
1.Python的通用序列包括:字符串、列表、元组。
- 字符串:不可变对象,元素只能是字符
- 列表:可变对象,元素类型不限
- 元组:不可变对象,元素类型不限
这里的
可变指的是能否修改对象,如增加序列元素,修改序列元素等等
2.Python通用序列操作有:
- 索引操作:
seq[index],返回序列在该位置处的值,有越界检查 - 分片操作:
seq[index1:index2]:返回一个新的序列,有越界检查 - 序列加法:
seq1+seq2:返回一个新序列,包含seq1、seq2的拷贝 - 序列乘法:
seq*N:返回一个新序列,包含seq的N份拷贝
3.set不是序列,它是可变对象,但是元素只能是不可变类型。
字典也不是序列,它是可变对象,其元素的值是不限类型,但是键必须是不可变类型。
4.三种解析表达式:
- 列表解析表达式:
[c*4 for c in 'abcd']生成一个新列表对象,
结果为:['aaaa','bbbb','cccc','dddd'] set解析表达式:{c*4 for c in 'abcd'}生成一个新set对象,
结果为:{'aaaa','bbbb','cccc','dddd'}(打印顺序不确定)- 字典解析表达式:
{c:c*4 for c in 'abcd'}生成一个新列表对象,
结果为:{'a':'aaaa','b':'bbbb','c':'cccc','d':'dddd'}(打印顺序不确定)
注意:并没有元组解析表达式。
(c*4 for c in 'abcd')返回的是一个生成器对象。
5.Python 3.0 中,bytearray字节串类型是可变的
6.序列的拷贝:
- 分片表达式能复制序列, 只能进行顶层拷贝
- 字典的
.copy()方法能复制字典, 只能进行顶层拷贝 - 通过
list()、tuple()等方法 - 通过
copy标准库模块,可以进行深层拷贝
7.比较操作时,Python能够自动遍历嵌套的对象,从左到右递归比较,要多深有多深。过充中首次发现的差异将决定比较的结果。
- 数字通过相对大小比较
- 字符串从左到右每个字符按照字符的字典序比较
- 列表和元组从左到右每部分内容都比较
字典通过排序后的
(键,值)列表比较Python 3.0 中的字典只能进行相等、不等比较
数字与其他类型比较在 Python 3.0 中是错误的

8.当一个复合对象包含指向自身的引用时(如L.append(L)),称为循环对象。当Python在对象中检测到循环时,会打印成[...]而不会陷入无限循环。
