Python 列表切片
最后修改于 2024 年 1 月 29 日
在本文中,我们将介绍如何在 Python 中创建列表切片。
列表是可变、有序的值集合。列表元素可以通过零基索引访问。
列表切片是列表中一部分元素的集合。
Python 切片语法
列表切片是一种操作,它从列表中提取某些元素并形成一个新的列表。可能具有不同的索引数量和不同的索引范围。
索引是零基的。它们可以是负数。
列表切片的语法如下
[start:end:step]
语法中的 start、end、step 部分是整数。它们都可以省略。它们可以是正数也可以是负数。不包含 end 索引处的值。
我们包含 end 索引之前的所有元素,但不包含 end 索引处的元素。
Python 列表切片 start/end
start 索引是开始索引;end 索引是切片的结束索引。
#!/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` 函数,我们可以获得列表的大小。由于切片的 end 索引不包含在内,因此它可以用于切片语法。
s1 = vals[0:5]
我们使用 start=0 和 end=5 创建列表切片。索引为 0、1、2、3 和 4 的元素包含在切片中。
s2 = vals[2:last]
第二个切片包含索引为 2..最后一个元素-1 的元素。
$ ./main.py [-2, -1, 0, 1, 2] [0, 1, 2, 3, 4, 5, 6]
Python 列表切片省略索引
切片语法的所有三个索引都可以省略。如果我们省略 start 索引,则切片从第一个元素开始。如果我们省略 end 索引,则切片生成到最后一个元素。如果我们省略 step,则默认 step 为 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])
程序使用负 start/end 索引。
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])
这里我们创建了一个切片,从第二个元素开始,到第八个元素结束,每隔一个元素取一个。新列表包含以下元素:[-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 个元素取一个。start 索引必须大于 end 索引。
#!/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 教程。