python切片
python的切片是对列表的操作,我以前总是记不住各种类型,比如逆序,比如隔一个去一个,取所有,取倒数10个等等。
现在发现,其实就是没有对列表切片的基本概念没理解,理解了就不用去记了。
我们来看看列表切片的构成:
- 首先切片是由中括号[ ]括起来的
- 由起始索引start,结束索引end,和步长step三部分构成
- 中间有2个冒号 :来隔开。第一个冒号隔开的是起始结尾索引,第二个冒号后边跟的是步长。
- 从起始索引开始取值,每一次取值后,去下一个值时,索引加上步长
- 最右侧的end索引对应的值取不到,如果end为空,则取到最后
[start : end : step]
注意:start, end, step以及第二个冒号,有很多时候是可以不写的,具有不同的意义
先写一个列表:
a = [10, 20, 30, 40, 50, 60, 70,80]
- 第二个冒号和step,默认是不写的,表明步长为1,比如 a[2: 4]等价于a[2:4:1],结果就为[ 30, 40],取出的是索引2和3的值构成新的列表,记得索引右侧是取不到的,即a[4]是没有取到的。
- a[:2]等价于a[0:2:1],结果为[10, 20]
- a[7:]等价于a[7:8:1],从索引7到最后,结果为[80]
- a[-1]取的是倒数第一个值
- a[-3:-1]等价于a[-3 : -1 : 1],取的是a[-3], a[-2]两个值,即[60, 70],其中a[-1]是取不到的,如果要取最后三个,需要写成a[-3:]的方式
- a[:-4:-1]表示取出最后三个值,并逆序,结果为[80, 70, 60]
- a[-3::-1]表示的索引为-3,-4, -5,-6, -7, -8,所以结果为[60, 50, 40, 30, 20, 10]
- [::-1]等价于[0:8:-1],实现逆序,每一次取的是a[0-1] = a[-1], a[0-1-1] = a[-2]