在Python中,切片是对序列型对象的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。
start_index: 切片切割开始的位置
end_index:切片切割结束的位置,不包含end_index处的元素
step:步长,默认值是1,也可以取负值(从右往左的切割)
以列表 a = [0,1,2,3,4,5,6,7,8,9]为例
1、切割单个值
>>> a[0] 0 >>> a[1] 1 >>> a[-1] 9
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_index和end_index全为正
>>> a[1:6] #从1切割到6(不包含6)step=1 [1, 2, 3, 4, 5] >>> a[1:6:-1] # step=-1 表示的从右往左 start_index=1和end_index=6 表示从左往右,矛盾 了,所以返回的是空 [] >>> a[6:1] # step = 1 表示从左往右,start_index=6 和end_index=1 表示从右往左 [] >>> a[:6] #start_index = 0 end_index=6 (不包含6) [0, 1, 2, 3, 4, 5] >>> a[:6:-1] # step = -1 表示从右往左 [9, 8, 7] >>> a[6:] [6, 7, 8, 9] >>> a[6::-1] [6, 5, 4, 3, 2, 1, 0]
4、start_index和end_index全为负
>>> a[-1:-6] # step=1 从左往右 start_index=-1 和end_index=-6 从右往左 [] >>> a[-1:-6:-1] # start_index=-1 和end_index=-6(不包含-6) 从右往左 step = -1 [9, 8, 7, 6, 5] >>> a[-6:-1] # step=1 从左往右 start_index=-6 和end_index=-1 [4, 5, 6, 7, 8] >>> a[:-6] [0, 1, 2, 3] >>> 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_index和end_index 正负混合
>>> a[1:-6] #step = 1 从左往右 start_index=1 和end_index=-6 从左往右 [1, 2, 3] >>> a[1:-6:-1] [] >>> a[-1:6] [] >>> a[-1:6:-1] [9, 8, 7]
6、连续切片
>>> a[:8][2:5][-1:] [4] a[:8] -------- [0,1,2,3,4,5,6,7] a[:8][2:5] --------- [2,3,4] a[:8][2:5][-1:] --------- [4]
7、三个参数可以是表达式
>>> a[3//2:3+2:2*1] [1, 3]
8、其他对象的切片
>>> t (1, 2, 3, 4) >>> t[1:3] (2, 3) >>> s = "ABCDSDE" >>> s[::2] 'ACSE' >>> "ABCDS"[1:3] 'BC' >>> for i in range(0,100)[4:20][5:7]: ... print(i) ... 9 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)