Python--数据结构
序列sequence
通用的序列操作
- 索引
- 索引从0开始
- 最后一个元素的索引可以用-1表示
- 字面量后面可直接执行索引操作,而不必先把字面量赋值给一个变量
- 切片
- [起始索引:结束索引:步长]
- 三个值都可以省略
- 省略起始索引,表示从第一个元素开始
- 省略结束索引,表示一直到列表最后,包括最后一个元素
- 省略步长,则步长为1
- 返回结果不包含结束索引的值
- 结束索引可以大于列表的长度,不会报错,返回值一直到最后一个元素
- 步长不能为0,可以是负数
- 当步长为负数时
- 表示从后往前操作
- 起始索引必须大于结束索引,否则返回的时空列表[]
- 相加
- 相同类型的序列可以使用加号+直接拼接,不同类型不可以相加
- 'hello' + 'world' = 'hello world'
- [1, 2, 3] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]
- 相同类型的序列可以使用加号+直接拼接,不同类型不可以相加
- 相乘
- 序列 * n 表示重复这个序列n次创建一个新序列
- [1, 2, 3] * 2 = [1, 2, 3, 1, 2, 3]
- 序列 * n 表示重复这个序列n次创建一个新序列
- 成员资格
- xxx in 序列: 返回True或者False
内置函数
- len(序列): 返回序列元素个数
- max(序列): 返回序列中最大的元素
- min(序列): 返回序列中最小的元素
list 列表
- 修改元素
- _list[index] = xxx
- 不能跨界赋值,否则报错:IndexError: list assignment index out of range
- 删除元素
- del _list[开始索引:结束索引:步长]
- 也就是把选中的元素从列表中删除
- 切片操作
- _list[开始索引:结束索引:步长] = 新的列表(可以为空列表[])
- 就是用新列表的元素替换掉原列表中选中的元素
- 如果步长不是1,则新列表的元素数量要与等待替换的元素数量一致
a = [1, 2, 3, 4, 5, 6] # a[::] = ['a', 'b'] # 输出 ['a', 'b'] # a[2:] = ['a', 'b'] # 输出 [1, 2, 'a', 'b'] a[2:5] = ['a', 'b'] # 输出 [1, 2, 'a', 'b', 6] # a[2:2] = ['a', 'b'] # 表现为插入 输出 [1, 2, 'a', 'b', 3, 4, 5, 6] # a[2:5] = [] # 表现为删除 输出 [1, 2, 6] # a[::2] = ['a', 'b'] # 报错 ValueError: attempt to assign sequence of size 2 to extended slice of size 3 # a[::2] = [] # 报错 ValueError: attempt to assign sequence of size 0 to extended slice of size 3 # a[::2] = ['a', 'b', 'c'] # 数量要一致,一一替换 输出 ['a', 2, 'b', 4, 'c', 6] # a[::-1] = ['a', 'b'] # 报错 ValueError: attempt to assign sequence of size 2 to extended slice of size 6 print(a)