列表切片(List slices)提供了从列表中检索值的更高级的方法。

列表名[num1 : num2 : num3]

从索引num1到num2(不包括num2)间隔为num3的元素

num1或num2为负值代表从末尾开始算起的

num3为负值代表切片进行逆序截取

以下为具体说明

基本用法

用两个以冒号分隔的整数索引列表。

列表切片返回一个包含索引之间旧列表中所有值的新列表。

例如:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])

结果:

[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]

和Range参数一样,在一个 slice 中提供的第一个索引被包含在结果中,但是第二个索引没有。

省略一个数字

如果省略了切片中的第一个数字,则将从列表第一个元素开始。

如果第二个数字被省略,则认为是到列表结束。

例如:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[:7])
print(squares[7:])

结果:

[0, 1, 4, 9, 16, 25, 36]
[49, 64, 81]

切片也可以用在元组上

带间隔的切片

列表切片还可以有第三个数字,表示间隔。

例如:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[::2])
print(squares[2:8:3])

结果:

[0, 4, 16, 36, 64]
[4, 25]

[2:8:3] 包含从索引2到8间隔3的元素。

带负值

负值也可用于列表切片(和正常列表索引)。当切片(或普通索引)中的第一个和第二个值使用负值时,它们将从列表的末尾算起。

例如:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[1:-1])
print(squares[-3:-1])
print(squares[::-1])

结果:

[1, 4, 9, 16, 25, 36, 49, 64]
[49, 64]
[81, 64, 49, 36, 25, 16, 9, 4, 1, 0]

如果切片第三个数值使用负值,则切片进行逆序截取。
使用[::-1]作为切片是反转列表的常用方法。