取一个list或tuple的部分元素是非常常见的操作。对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
用法:【起始:结束:步长】
较常见的用法是【起始:结束]
首先要知道正负索引怎么取值的
正索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
负索引 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1、起始位置包含该索引本身,结束索引不包含该索引本身
>>> a=list(range(10))
>>> a[0:2]
[0, 1]
2、省略起始位置的参数则默认起始位置是0
>>> a[:3]
[0, 1, 2]
3、[:]直接原样输出
>>> a[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4、索引为负时用法也一样,依旧是从左往右输出,只是负号代表那个数是从右往左的第几个数
>>> a[:-2]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> a[-4:-2]
[6, 7]
>>>
5、省略结束位置则输出到末尾
>>> a[1:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
6、步长表示以几个增量取值,默认步长为1
设置步长为2取出该list中的奇数
>>> a[1::2]
[1, 3, 5, 7, 9]
步长为负时表示从右往左取值输出
>>> a[1::-1]
[1, 0]
7、此外开始索引和结束索引还可以混合取值,只要知道对应索引取到的是哪个值就能知道切下来的是列表哪一部分了,可以自己尝试下
>>> a[1:-2]
[1, 2, 3, 4, 5, 6, 7]