python切片的个人理解
摘要:关于python切片的一些个人理解
首先声明一个list
a = ["p","y","t","h","o","n"]
切片的基本形式为:
a[start:stop:step]
当step索引默认为1或者指定为1时
start是起始位置,默认值为0
stop是终点位置,默认值为len(a)+1
当step索引指定为-1时
start是起始位置,默认值为len(a)+1
stop是终点位置,默认值为0
当start,stop为正值的情况
>>> a = ["p","y","t","h","o","n"]
>>> a[0:1]
['p']
>>> a[0:3]
['p', 'y', 't']
>>> a[0:3:1]
['p', 'y', 't']
>>> a[0:3:]
['p', 'y', 't']
可以看到先取a[start],然后取a[start+step],然后取a[start+step+step]
因为a[start+step+step+step]等于stop所以取值停止。
当start,stop为负值的情况
例一:
>>> a[-6:-3:1]
['p', 'y', 't']
>>> a[0:3:1]
['p', 'y', 't']
>>> a[-6:3:1]
['p', 'y', 't']
可以看到 a[-6:-3:1] 以及 a[-6:3:1] 和 a[0:3:1] 结果一模一样,参照上面的对照表,确实-6位置对应的0,-1位置对应的-1;可以认为python会将负值转化为正值,比如a[-6:3:1],a[-6:-3:1] 转化为 a[0:3:1] 然后输出
当指定step为负值时
例一:
>>> a[-1:0:-1]
['n', 'o', 'h', 't', 'y']
>>> a[5:0:-1]
['n', 'o', 'h', 't', 'y']
可以理解为:
a[-1:0:-1]转化为a[5:0:-1],然后依次取a[start],a[start+step],然后a[start+step+step],然后a[2],a[1]。这个时候start+step+step+step+step+step等于stop,停止取值。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。