python中列表的切片

1. 切片

取一部分叫做切片,切片的原则是左闭右开,即取头部不取尾部;切片的步长默认为1,不可以为0

In [13]: a = [1,2,3,'bb','cc','dd']

In [14]: a[1:3]
Out[14]: [2, 3]

In [15]: a[1:4]
Out[15]: [2, 3, 'bb']

In [16]: a
Out[16]: [1, 2, 3, 'bb', 'cc', 'dd']

In [17]: a[2:]
Out[17]: [3, 'bb', 'cc', 'dd']

2. 切片中的步长

比如a[1:4:2] 中的2就是表示步长为2,表示就是从第1个元素取到第3个元素,但是是每2个元素取一个。如果步长为1就是表示的连续取值。

In [19]: a = [1,2,3,'aa','bb','cc']

In [20]: a[1:4:2]
Out[20]: [2, 'aa']
    
In [5]: print (a[:3])
[1, 2, 3]

In [6]: print(a[::2])
[1, 3, 'bb']

In [7]: print (a[::-1])
['cc', 'bb', 'aa', 3, 2, 1]

In [8]: print (a[1:5:-1])
[]

In [1]: a = [1,2,3,4,5,6]
In [2]: a[1:4:-2]  
Out[2]: []  #首先看步长,步长为-2,表示逆序取值,然后起始索引位置为1,结束索引位置为4,则是顺序取值的,所以无法取到值

In [3]: a[4:1:-2]
Out[3]: [5, 3]#步长为-2,表示逆序取值,起始位置索引是4,结束位置索引是1,但是无法取到索引为1的值

In [4]: a[-1::-1]
Out[4]: [6, 5, 4, 3, 2, 1]
#步长为-1,逆序取值;起始索引位置为-1,即倒数第一个值,结束为空,则表示取完所有的
    
In [5]: a[-1:0:-1]
Out[5]: [6, 5, 4, 3, 2]
#步长为-1,逆序取值;起始索引位置为-1,则为倒数第一个;结束的索引位置为0,但是无法取到索引位置为0的元素;即无法取到1

In [12]: a[-3:0:-2]
Out[12]: [4, 2]
#步长为-2,逆序间隔取值;其实位置索引为-3,结束位置索引为0,即从倒数第三个取到顺数第一个值;

In [13]: a[-5:-3:-1]
Out[13]: []
#步长为-1,逆序取值;起始位置索引为-5,结束位置索引为-3,即从倒数第5个元素取到倒数第2个元素,这样就变成了顺序取值了,矛盾了,故无法取到值

In [15]: a[-1:-5:-1]
Out[15]: [6, 5, 4, 3]
#步长为-1,即逆序取值;起始位置索引为-1,结束位置索引为-4,即从倒数第一个取到倒数第4个

In [16]: a[-1:-5:-2]
Out[16]: [6, 4]
#步长为-2,即逆序间隔取值;起始位置索引为-1,结束位置索引为-4,即间隔从倒数第1个取到倒数第4个

3. 切片取值总结

[1:] 从当前索引位置取到最后

[1:3] 取索引值为1到3的元素

[1:3:2] 最后一个元素叫做步长

[:3] 从头开始取,取到第二个元素

[::2] 表示以步长为2取出列表中的值

[::-1] 步长为负数,从后面往前面取值,相当于翻转

[1:5:-1] 步长为负数,逆序取值,然而起始位置索引是1,结束位置索引是5,表示顺序取值,与逆序取值相矛盾,即取出来为空

切片取值,优先看步长,步长为正数,表示顺序取值,步长为负数表示逆序取值;然后看起始位置索引和结束位置索引,注意,切片中无法取到结束位置索引所对应的值。

切片的操作适用于字符串和元组,但是字符串和元组是不可变的,列表是可变的。

扫描二维码关注公众号,回复: 4707827 查看本文章

猜你喜欢

转载自blog.csdn.net/liuzhuang2017/article/details/84963390