切片是用来处理list/tuple的常用手段,但是对于初级者最好还是做个笔记整理下用法比较好
举个例子(以list为例,tuple也是一样的用法)
那么针对list中的元素,它的index是怎么定义的呢,看下图
正数index从0到4,这个没问题吧
负数呢,index从-1到-5,这个也没问题吧,
那,切片到底怎么用呢,没干货是解决不了问题的,对吧
用法:
list[x:y:z]
这个x, y, z 呢,就是切片参数,它的范围呢是-∞ ~ ∞ (负无穷大 ~ 无穷大),但必须是整数
x: 表示从哪里开始
y: 表示到哪里结束
z: 表示从x 到 y你想用多少位作为间隔,比如1表示间隔1,2表示间隔2,就是跳跃式取值,3呢就是间隔3个取,能理解吗?
然后就是从x开始,那x元素可以取到,但是取不到y,因为到y截止了,这个非常重要,一定要记住
来吧,上题目
print a[::]
print a[1::]
print a[1:2:]
print a[1:2:1]
print a[-1:-2:-1]
运行结果是什么呢,看下面
[1, 2, 3, 4, 5] 为什么是全部呢,因为你没有给开始地址,结束地址,以及间隔,所以它把所有元素都罗列出来
[2, 3, 4, 5] 因为你给了开始地址1,那元素2对应的index是不是1,对了,所以就从这里取,而且你也没给结束地址,就取出这样的结果
[2] 因为你给出从索引1取到索引2,索引1对应元素2,索引2对应元素3,参考上面的总结,索引2是结束地址,这个元素是取不上的,所以返回[2]
[2] 虽然多了个间隔1,但是原理同上
[5] 索引-1 对应的元素是5,索引-2对应的元素是4,间隔为1,所以返回[5]
那么对于开始地址,结束地址,间隔如果是正负数混搭的怎么理解呢,看下图
我总结几点如下()
格式是开始地址,结束地址,间隔
1 负正正 -> 开始地址为负,那么只有间隔为正才会有可能切到值,因为间隔为负会把它引导负无穷大, 顺时针取
2 负正负 -> 参考1
3 正负正 -> 参考4
4 正负负 -> 开始地址为正,那么只有间隔为负才会有可能切到值,因为间隔为正会把它引导正无穷大,逆时针取