Python中的列表切片和索引

列表的切片

  • 切片:
    从列表中切出元素,重新组成一个新的列表
  • 格式:
    [(起始索引a):(结束索引b):(步长)]
>>> l=[1,2,3,4,5,6]
>>> l[0:1]
[1]
>>> l[3::2]
[4, 6]
>>> l[5::-1]
[6, 5, 4, 3, 2, 1]
>>> l[5:2:-1]
[6, 5, 4]
>>> l[8::-1]
[6, 5, 4, 3, 2, 1]
>>> l[:-10:-1]
[6, 5, 4, 3, 2, 1]


注意:当起始索引省略时,默认从第一个开始;
     当起始索引超出列表索引范围时,默认从最后一个开始;
     当结束索引省略时,默认到最后一个结束;
     当结束索引超出列表索引范围时,默认到最后一个结束;
     当步长为负时,反向切片;
  • 切片赋值改变元素
    格式:l [::] = 可迭代对象
>>> l=[1,2,3,4]
>>> l[:2]=[5,6]
>>> print(l)
[5, 6, 3, 4]
  • 切片赋值常用于数据的插入
>>> l=[1,2,3,4]
>>> l[2:2]=[5]
>>> print(l)
[1, 2, 5, 3, 4]
>>> 
>>> l=[1,2,3]
>>> l[len(l):]=[8,7,6]
>>> print(l)
[1, 2, 3, 8, 7, 6]
>>> l[-1:-1]=['xiaoming']
>>> print(l)
[1, 2, 3, 8, 7, 'xiaoming', 6]
>>> 

当超出列表索引范围时候,自动插入到列表末尾
>>> l=[16,17,18]
>>> l[5:]=[4,5]
>>> print(l)
[16, 17, 18, 4, 5]
>>> 
  • 注意事项:
    对于步长不等于的1的切片赋值,赋值运算符右侧的可迭代对象提供的个数一定要等于切片切出的段数
>>> l=[1,2,3,4,5,6,7,8]
>>> l[1::2]='ABCD'
>>> print(l)
[1, 'A', 3, 'B', 5, 'C', 7, 'D']
>>> 

错误示范:
>>> l=[1,2,3,4,5,6,7,8]
>>> l[1::2]='ABCDEF'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 6 to extended slice of size 4
>>> 

猜你喜欢

转载自blog.csdn.net/Bala_Manaoano/article/details/82503664