Python中list的切片操作

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. list的切片操作

Python中可以对list使用索引来进行切片操作,其语法(Python3)如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a[:]           # a copy of the whole array
a[start:] # items start through the rest of the array
a[:stop] # items from the beginning through stop-1
a[start:stop] # items start through stop-1

a[start:stop:step] # start through not past stop, by step

a[-1] # last item in the array
a[-2:] # last two items in the array
a[:-2] # everything except the last two items


a[::-1] # all items in the array, reversed
a[1::-1] # the first two items, reversed
a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed

测试结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 从0开始索引列表,索引值为整数
>>> a = list(range(10)) # 定义列表a
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:] # 复制列表
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:] # 从索引为0的列表元素开始迭代列表至列表结束
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[1:] # 从索引为1的列表元素开始迭代列表至列表结束
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:9] # 从索引为0的列表元素开始迭代列表至索引为8的列表元素,不包含索引为9的列表元素
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a[3:5] # 从索引为3的列表元素开始迭代列表至索引为4的列表元素,不包含索引为5的列表元素
[3, 4]
>>> a[::1] # 从索引为0的列表元素开始索引列表,每次迭代索引值加1,直至列表结束
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::2] # 从索引为0的列表元素开始索引列表,每次迭代索引值加2,直至列表结束
[0, 2, 4, 6, 8]
>>> a[3:9:2] # 从索引为3的列表元素开始索引列表,每次迭代索引值加2,直至索引为8的列表元素,不包含索引为9的列表元素
[3, 5, 7]

# 当索引值为负数时
>>> a[-1] # 列表的最后一个元素
9
>>> a[-2:] # 从列表的倒数第二个元素直至列表结束,即从索引值为-2的元素直至列表结束
[8, 9]
>>> a[:-1] # 从列表的第一个元素直至列表的倒数第二个元素结束,不包含最后一个列表元素
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a[:-2] # 从列表的第一个元素直至列表的倒数第三个元素结束,不包含最后两个个列表元素
[0, 1, 2, 3, 4, 5, 6, 7]


# 当step为负值时,表示逆向索引列表
>>> a[::-1] # 反转列表,从列表最后一个元素到列表的第一个元素
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[1::-1] # 从索引值为1的列表元素开始,逆向索引直列表开头
[1, 0]
>>> a[-3::-1] # 从索引值为-3的列表元素开始,逆向索引直列表开头
[7, 6, 5, 4, 3, 2, 1, 0]
>>> a[:-3:-1] # 从索引值为-1,逆向索引直索引为-2的元素结束,不包含索引为-3的元素
[9, 8]

参考资料

  1. https://stackoverflow.com/questions/509211/understanding-slice-notation
如果有收获,可以请我喝杯咖啡!