a[start:stop] # от start до stop
a[start:] # от start до конца последовательности
a[:stop] # от начала последовательности до stop
a[:] # копирует последовательность целиком
“步骤”还有一个含义,可以与上述任何示例结合使用。
a[start:stop:step] # от start до stop с шагом step
a[-1] # последний элемент последовательности
a[-2:] # два последних элемента последовательности
a[:-2] # все, кроме двух последних элементов
同样,step它也可以是负数:
a[::-1] # все элементы контейнера, но в обратном порядке
a[1::-1] # первые два элемента в обратном порядке
a[:-3:-1] # последние два элемента в обратном порядке
a[-3::-1] # все, кроме последних двух элементов, в обратном порядке
这是切片语法:
“步骤”还有一个含义,可以与上述任何示例结合使用。
请记住,该值
:stop
代表不在所选切片中的第一个值。stop
因此,和之间的差异start
是所选元素的数量(Ifstep
- 1,默认值)。还有一个特征:
start
且stop
可以为负数。这意味着您需要从容器的末尾开始计数,而不是从头开始计数。同样,
step
它也可以是负数:如果序列的元素少于您要求的元素,Python 对程序员是友好的。例如,如果您编写
a[:-2]
, 但a
仅在一个元素中,您将得到一个空列表,而不是错误。有时这种情况下需要出错,所以要小心。对象关系
slice
一个对象
slice
可以代表一个切片运算符,即:相等的:
slice
根据参数的数量,对象的行为也略有不同,例如函数range()
,即 将是正确的 和slice(stop)
、 和slice(start, stop[, step])
。要省略参数,请插入None
. 也就是说,例如,a[start:]
相当于a[slice(start, None)]
,并且a[::-1]
与 相同a[slice(None, None, -1)]
。虽然“:”语法对于简单的切片操作非常有用,但显式使用对象
slice()
可以更轻松地以编程方式生成切片。译者注。我使用“序列”一词而不是“列表”来代替原始数组,因为切片不仅适用于列表,还适用于元组和其他类似的序列。