切片:
大致意思就是从一个集合里面切出一块出来
在python中切片是用来切割可迭代对象(容器)
完整的切片包含:
三个参数和两个冒号
例如:
a[start:end:step]
解释:
start -------- 切片起始的位置,如果没有值就从头开始
end ---------- 切片结束的位置,但是不包含 end 在内,属于(前闭后开),如果没有值就表示切割到结束为止
step ---------- 步长,默认值为1,如果是正数的情况,则表示为从左往右,如果是负数的情况,则表示从右往左
例如:
a[start:]:表示从start开始切割,到结束为止,从左往右 a[:end]:表示从开始切割,到end为止,但是不包含end,从左往右 a[start:end]:表示从start开始,到end结束,但是不包含end,从左往右 a[start:end:step]:表示从start开始,到end结束,但是不包含end,step为正从左往右,负从右往 左
例题:
a = [0,1,2,3,4,5,6,7,8,9]
1、切割单个值
>>> a = [0,1,2,3,4,5,6,7,8,9] >>> a[1] 1 >>> a[5] 5 >>> a[9] 9
2、切割完整对象
>>> print(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> 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 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1:6] [1, 2, 3, 4, 5] >>> a[2:5] [2, 3, 4] >>> a[1:6:-1] [] >>> a[6:1:-1] [6, 5, 4, 3, 2] >>> a[:6] [0, 1, 2, 3, 4, 5] >>> a[:6:-1] [9, 8, 7] >>> a[6:] [6, 7, 8, 9] >>> a[6::-1] [6, 5, 4, 3, 2, 1, 0]
4、start 和 end全部取负数的情况
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[:-6] [0, 1, 2, 3] >>> a[-1:-6] [] >>> a[-1:-6:-1] [9, 8, 7, 6, 5] >>> a[:-6:-1] [9, 8, 7, 6, 5] >>> 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] [] >>> a[1:-6] [1, 2, 3] >>> a[1:-6:-1] [] >>> a[-1:6:-1] [9, 8, 7] >>> a[-1:5:-1] [9, 8, 7, 6]
6、连续的切片操作
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[:8][2:5][-1:] [4] >>> a[:8][1:6][-1:] [5]
解释:
a[:8] ---- [0,1,2,3,4,5,6,7] [0,1,2,3,4,5,6,7][2:5]----[2,3,4] [2,3,4][-1:] ----[4]
7、切片中的三个参数为表达式
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1+3:2%3:7%2] [] >>> a[1+2:2*3:7%2] [3, 4, 5]
8、切片可以操作其他的对象
>>> b = (1,2,3,4,5,6) >>> b[2:5] (3, 4, 5) >>> c = "ABCDEFG" >>> c[3:6] 'DEF' >>> for i in range(0,100): ... print(i) ... >>> for i in range(0,100)[2::3][-10:]: ... print(i) ... 71 74 77 80 83 86 89 92 95 98
总结:
1、如果进行切片的时候,超过了下标不会报错
2、如果切片操作的时候方向相矛盾的话,不会报错,返回为空
3、在python中进行反向输出列表:
第一种:循环
第二种:[::-1]
第三种:reverse()



