列表切片(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]作为切片是反转列表的常用方法。