在本文中,我们展示了如何在Python中创建列表切片。
列表是一个可变的、有序的值集合。列表元素可以通过从零开始的索引访问。
列表切片是列表元素的一部分。
Python切片语法
列表切片是一种从列表中提取某些元素并将它们组成另一个列表的操作。可能具有不同数量的索引和不同的索引范围。
索引是从零开始的。它们可以是负数。
列表切片的语法如下:
[start:end:step]
语法的开始、结束、步骤部分是整数。它们中的每一个都是可选的。它们可以是正的也可以是负的。具有结束索引的值不包含在切片中。
我们包括直到结束索引的所有元素,不包括索引结束的元素。
Python列表切片开始/结束
startindex为开始索引;结束索引是切片的结束索引。
#!/usr/bin/python vals = [-2, -1, 0, 1, 2, 3, 4, 5, 6] last = len(vals) s1 = vals[0:5] print(s1) s2 = vals[2:last] print(s2)
程序创建了两个切片。
last = len(vals)
通过len
函数,我们可以得到列表的大小。由于不包括切片的结束索引,因此可以在切片语法中使用它。
s1 = vals[0:5]
我们创建了一个列表切片,其中start=0和end=5。索引为0、1、2、3和4的元素包含在切片中。
s2 = vals[2:last]
第二个切片包含indexex为2..last-1的元素。
$ ./main.py [-2, -1, 0, 1, 2] [0, 1, 2, 3, 4, 5, 6]
Python列表切片省略索引
切片语法的三个索引都可以省略。如果我们省略startindex,则从第一个元素创建切片。如果我们省略结束索引,则切片生成到最后一个元素。如果我们省略该步骤,则默认步骤为1。
#!/usr/bin/python vals = [-2, -1, 0, 1, 2, 3, 4, 5, 6] s1 = vals[:3] print(s1) s2 = vals[3:] print(s2) s3 = vals[:] print(s3) s4 = vals[::] print(s4)
在程序中,我们省略了索引。
s1 = vals[:3]
我们创建一个从头到第三个元素的切片。
s2 = vals[3:] print(s2)
创建从第四个元素到最后一个元素的切片。
s3 = vals[:]
这里我们创建一个列表的副本。
s4 = vals[::]
这里我们还创建了列表的副本。
$ ./main.py [-2, -1, 0] [1, 2, 3, 4, 5, 6] [-2, -1, 0, 1, 2, 3, 4, 5, 6] [-2, -1, 0, 1, 2, 3, 4, 5, 6]
Python切片负索引
索引可以是负数。负索引指的是列表末尾的值。最后一个元素的索引为-1,最后一个元素的索引为-2等。负数较小的索引必须在语法中排在第一位。这意味着我们写[-6,-2]而不是[-2,-6]。后者返回一个空列表。
#!/usr/bin/python vals = [1, 2, 3, 4, 5, 6, 7, 8] print(vals[-4:-1]) print(vals[:-2]) print(vals[-1:-4])
该程序使用负开始/结束索引。
print(vals[-4:-1])
我们从倒数第二个索引到第四个索引创建一个切片。
$ ./main.py [5, 6, 7] [1, 2, 3, 4, 5, 6] []
Python列表切片步骤
切片语法中的第三个索引是步骤。它允许我们从列表中取出每个第n个值。
#!/usr/bin/python vals = [-2, -1, 0, 1, 2, 3, 4, 5, 6] print(vals[1:9:2]) print(vals[::2]) print(vals[::1]) print(vals[1::3])
我们使用步长值形成四个新列表。
print(vals[1:9:2])
这里我们创建一个切片,每隔一个元素来自n列表,从第二个元素开始,到第八个元素结束。新列表包含以下元素:[-1,1,3,5]。
print(vals[::2])
在这里,我们通过从列表的开头到结尾每隔一个值来构建一个切片。
print(vals[::1])
这会创建一个列表的副本。
print(vals[1::3])
从第二个元素到列表末尾,切片每三个元素都有一个。
$ ./main.py [-1, 1, 3, 5] [-2, 0, 2, 4, 6] [-2, -1, 0, 1, 2, 3, 4, 5, 6] [-1, 2, 5]
Python列表切片负步
在负步中,我们从末尾取出第n个元素。开始索引必须大于结束索引。
#!/usr/bin/python vals = [-2, -1, 0, 1, 2, 3, 4, 5, 6] print(vals[5:0:-2]) print(vals[::-2]) print(vals[::-1])
程序使用负步。
print(vals[5:0:-2])
我们创建一个从第六个元素到第一个元素的切片,每隔一个元素跳过一次。
print(vals[::-2])
这会从末尾到开头每隔一个元素创建一个切片。
print(vals[::-1])
此行创建了一个包含反转元素的列表副本。
$ ./main.py [3, 1, -1] [6, 4, 2, 0, -2] [6, 5, 4, 3, 2, 1, 0, -1, -2]
Python列表切片赋值
切片语法可以与赋值一起使用。
#!/usr/bin/python vals = [1, 2, 3, 4, 5, 6, 7, 8] vals[0] = 10 vals[1:3] = 20, 30 vals[3::1] = 40, 50, 60, 70, 80 print(vals)
我们有一个包含八个整数的列表。我们使用切片语法用新值替换元素。
$ ./main.py [10, 20, 30, 40, 50, 60, 70, 80]
在本文中,我们介绍了Python中的列表切片操作。
列出所有Python教程。