切片操作
我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似。
切片是 Python 序列及其重要的操作,适用于列表、元组、字符串等等。切片的格式如下:
切片 slice 操作可以让我们快速提取子列表或修改。标准格式为:
[起始偏移量 start:终止偏移量 end[:步长 step]]
注:当步长省略时顺便可以省略第二个冒号
典型操作(三个量为正数的情况)如下:
操作和说明
示例
结果
[:]提取整个列表
[10,20,30][:]
[10,20,30]
[start:]从start索引开始到结尾
[10,20,30][1:]
[20,30]
[:end]从头开始直到end-1
[10,20,30][:2]
[10,20]
[start:end]从start到end-1
[10,20,30,40][1:3]
[20,30]
[start:end:step]从start提
取到end-1,步长是step
[10,20,30,40,50,60,70][1:6:2]
[20,40,60]
其他操作(三个量为负数)的情况:
示例
说明
结果
[10,20,30,40,50,60,70][-3:]
倒数三个
[50,60,70]
10,20,30,40,50,60,70][-5:-3]
倒数第五个到倒数第三个(包头不包尾)
[30,40]
[10,20,30,40,50,60,70][::-1]
步长为负,从右到左反向提取
[70, 60, 50, 40, 30, 20, 10]
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成”长度-1”。
例如:
>>> [10, 20, 30, 40][1:30]
[20, 30, 40]
列表的遍历
for x in listObj:
print(x)
复制列表所有的元素到新列表对象
如下代码实现列表元素的复制了吗?
list1 = [30,40,50]
list2 = list1
只是将 list2 也指向了列表对象,也就是说 list2 和 list2 持有地址值是相同的,列表对象本身的元素并没有复制。
我们可以通过如下简单方式,实现列表元素内容的复制:
list1 = [30,40,50]
list2 = [] + list1
注:我们后面也会学习 copy 模块,使用浅复制或深复制实现我们的复制操作。
