在Python中,切片(slice)是对序列型对象的一种高级索引方法。
切片取出序列中一个范围对应的元素
切片的书写形式:object[start:end:step];其中,star t是切片的起始索引值,为列表首位时可省略;end 是切片的结束位置,不包含end(前闭后开),当取列表末位时可省略;step 可以不提供,默认值是1,不允许为0 ,当 step 为负数时,列表翻转
a = [0,1,2,3,4,5,6,7,8,9]
1. 切割获取单个值
>>> a[0]
0
>>> a[-4]
6
2. 切割完整对象
>>>a[:] #从左往右
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>a[::]#从左往右
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>a[::-1]#从右往左
>>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3. start和end全为正的情况
>>>a[1:6]
>>> [1, 2, 3, 4, 5]
>>> a[1:6:-1] # start = 1 end = 6 表示从左往右 step=-1 表示的是从右往左 所以自相矛盾 返
回的是空
[]
>>> a[:6]
[0, 1, 2, 3, 4, 5]
>>> a[6:]
[6, 7, 8, 9]
>>> a[6::-1]
[6, 5, 4, 3, 2, 1, 0]
4. start和end全部为负数的情况下
>>> a[-1:-6]
[]
>>> a[-1:-6:-1]
[9, 8, 7, 6, 5]
>>> a[:-6]
[0, 1, 2, 3]
>>> a[-6:-1]
[4, 5, 6, 7, 8]
>>> a[-6:]
[4, 5, 6, 7, 8, 9]
>>> a[-6::-1]
[4, 3, 2, 1, 0]
5. start和end正负混合的情况
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> a[1:-6]
[1, 2, 3]
>>> a[-1:-6]
[]
>>> a[1:-6:-1]
[]
>>> a[-1:6]
[]
>>> a[-1:6:-1]
[9, 8, 7]
6. 连续切片操作
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:8][2:5][-1:]
[4]
a[:8]---- [0 1 2 3 4 5 6 7]---[2:5] ---[2,3,4]--[-1:]---[4]
7. 其他对象的切片操作
前面的切片操作以list对象为例进行说明,但实际上可进行切片操作的数据类型还有很多,包括元组、字符串等等
>>> t = (1,2,3,4)
>>> t[1:3]
(2, 3)
>>> s = "ABCDEFG"
>>> s[1:3]
'BC'
注:
1. 如果进行切片操作的时候,超越下标的话不会报错
2. 如果进行切片操作的时候,参数的取值相互矛盾的话不会报错,会返回一个空列表