从 python 文档docs.python.org/tutorial/introduction.html#strings:
切片索引具有有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为被切片的字符串的大小。
对于标准情况,这很有意义:
>>> s = 'mystring'
>>> s[1:]
'ystring'
>>> s[:3]
'mys'
>>> s[:-2]
'mystri'
>>> s[-1:]
'g'
>>>
到目前为止,一切都很好。但是,使用负步长值似乎暗示默认值略有不同:
>>> s[:3:-1]
'gnir'
>>> s[0:3:-1]
''
>>> s[2::-1]
'sym'
很好,也许如果步骤是负数,默认值会相反。省略的第一个索引默认为被切片的字符串的大小,省略的第二个索引默认为零:
>>> s[len(s):3:-1]
'gnir'
看起来不错!
>>> s[2:0:-1]
'sy'
哎呀。错过了那个'm'。
然后就是大家最喜欢的字符串反转语句了。甜蜜的是:
>>> s[::-1]
'gnirtsym'
然而:
>>> s[len(s):0:-1]
'gnirtsy'
切片从不包含切片中第二个索引的值。我可以看到这样做的一致性。
所以我想我开始了解 slice 在各种排列中的行为。但是,我感觉第二个索引有些特殊,并且负步长的第二个索引的默认值实际上不能用数字来定义。
任何人都可以简明扼要地定义可以解释所提供示例的默认切片索引吗?文档将是一个巨大的优势。