Python
分片的理解
在网上看到有很多人不能完全理解(特别是当步长为负数时)
Python
的分片操作,对此做
一个阐述。
先看问题:
>>> myStr="abcdefghijklmnopqrstuvwxyz"
>>> print(myStr)
abcdefghijklmnopqrstuvwxyz
>>> print(myStr[25:15:1])
为什么为空
>>> print(myStr[25:15:-1])
为什么它又不为空
zyxwvutsrq
>>> print(myStr[-15:-26:1])
为什么为空
>>> print(myStr[-15:-26:-1])
为什么它又不为空
lkjihgfedcb
>>> print(myStr[-26:-15:1])
为什么这样可以
abcdefghijk
>>> print(myStr[-26:-15])
和上面等效
abcdefghijk
>>> print(myStr[5::-1])
这个和下面的表达式如何理解?
fedcba
>>> print(myStr[:5:-1])
这个和上面的表达式如何理解?
zyxwvutsrqponmlkjihg
为了理解上面的问题,先提出了两个“概念”:
前行方向
和
步径方向
。
注:这两个所谓的方向完全是为了理解,我帮它们命名的,不喜勿喷。当然又更准确的名
字,欢迎留言,先谢谢了。
我们知道分片的完整表达如下:
slice[start:stop:step]