一、切片含义
1.切片(slice)是对序列型对象的一种高级索引方法。python中是用来切割可迭代对象(容器)
2.切片对象:列表list
, 字符串string
, 元组tuple,range函数等
二、形式
一个完整的切片有三个参数
object[start:end:step]
1.object是变量名
2.start、end代表下标,不是具体值
3.step:步长。默认取值是1,可以取负数。默认方向是从左往右,正数也代表从左往右,负数代表从右往左
4.特点:与range(参数1,参数2,step)函数相似(参数个数、取值范围),但range函数参数是具体值,而不是下标,与切片不同
三、用法
1、object[start:]:从start切割到结束位置(为最末端),包含最末端,方向是从左往右
2、object[start:end]:从start切割到end结束,不包含end(前闭后开),方向从左往右
3、object[start:end:step]:以step为单位从start切割到end结束不包含end(前闭后开)
注:object[start:end]和range(参数1,参数2)区间均为[ , )前闭后开
四、特例
1.反向切割:name[::-1]
2.自相矛盾体
2.1 name[1:6:-1]start = 1,end = 6 表示切片从左往右,step = -1 为负数,表示从右往左,切片产生矛盾,结果为空[ ],但不会产生错误
2.2name[6:1:1]和name[6:1]效果相同,结果均为[ ]
2.3 name[6:1]和name[6:1:1]都表示从右往左切片,step默认值为1,所以效果相同
总结:(1)start > end 表示从从左往右,start < end 表示从右往左
(2)step > 0 表示从左往右,step < 0 表示从右往左
(3)前两条不能相互违背,不然结果为空[ ]。当start和end表示从左到右,那么end也必须为正数;当start和end表示从右到左,那么end也必须为负数
3.取奇数位、偶数位
奇数位:[1::2]
偶数位:[::2]
五、连续切片
形式:name[start:end:step][start:end:step]
理解:将name按第一个切片切割,切割后的结果,再按第二个切片切割
例:
t = (0,1,2,3,4,5,6,7,8,9)
print(t[1:8][-1:-5:-1])
六、切片三个参数可为表达式
七、注意
- 切片时,超越小标不会报错,还会继续执行
- 切片时,参数取值相互矛盾,不会报错,会返回空列表[ ]
- 在python中实现反向列表输出的方法:
(1)循环 (2)list.reverse() (3)切片[::-1]