相关疑难解决方法(0)

Python*中的默认切片索引是什么*?

从python文档docs.python.org/tutorial/introduction.html#strings:

切片索引具有有用的默认值; 省略的第一个索引默认为零,省略的第二个索引默认为要切片的字符串的大小.

对于标准情况,这很有意义:

>>> s = 'mystring'
>>> s[1:]
'ystring'
>>> s[:3]
'mys'
>>> s[:-2]
'mystri'
>>> s[-1:]
'g'
>>> 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,使用负步长值似乎表明默认值略有不同:

>>> s[:3:-1]
'gnir'
>>> s[0:3:-1]
''
>>> s[2::-1]
'sym'
Run Code Online (Sandbox Code Playgroud)

很好,如果步骤为负,则默认值相反.省略的第一个索引默认为要切片的字符串的大小,省略的第二个索引默认为零:

>>> s[len(s):3:-1]
'gnir'
Run Code Online (Sandbox Code Playgroud)

看起来不错!

>>> s[2:0:-1]
'sy'
Run Code Online (Sandbox Code Playgroud)

哎呦.错过了'我'.

然后是每个人最喜欢的字符串反向声明.它很甜蜜:

>>> s[::-1]
'gnirtsym'
Run Code Online (Sandbox Code Playgroud)

然而:

>>> s[len(s):0:-1]
'gnirtsy'
Run Code Online (Sandbox Code Playgroud)

切片永远不会包含切片中第二个索引的值.我可以看到这样做的一致性.

所以我想我开始理解切片在各种排列中的行为.但是,我感觉第二个索引有点特殊,并且负步骤的第二个索引的默认值实际上不能用数字来定义.

任何人都可以简明地定义可以解释所提供示例的默认切片索引吗?文档将是一个巨大的优势.

python slice

9
推荐指数
2
解决办法
2043
查看次数

标签 统计

python ×1

slice ×1