Vik*_*nti -1 python string indices
我在python中创建了一个字符串:'HelpA'并将其标记为单词.
>>>word='HelpA'
>>>word
'HelpA' #expected string
>>>word[0:4]
'Help' #expected string
Run Code Online (Sandbox Code Playgroud)
在使用负索引调用单词时,我得到的是完整字符串而不是预期的部分字符串.
>>>word[-97:]
'HelpA' #not the expected string
Run Code Online (Sandbox Code Playgroud)
它给出了整个字符串而不是预期的字符串:'pA'为什么会发生这种情况?
看起来您期望负面指数"换行".(97%len(字)== 2).
它不:)
此示例显示了原因:
>>> word[-1:]
'A'
>>> word[-3:]
'lpA'
>>> word[-5:]
'HelpA'
>>> word[-10:]
'HelpA'
Run Code Online (Sandbox Code Playgroud)
当负索引超出字符串的长度时,它将被截断.Python文档的这一部分解释如下:
从i到j的s的片被定义为具有索引k的项的序列,使得i <= k <j
此代码执行等效切片(对于字符串):
def slice(s, i, j):
sliced = []
for k, item in enumerate(s):
if i <= k and k < j:
sliced.append(item)
return ''.join(sliced)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> slice('foo', -100, 2)
'fo'
>>> 'foo'[-100:2]
'fo'
Run Code Online (Sandbox Code Playgroud)
这应该清楚为什么word[-100:]并word[-99:]给出相同的结果:字符串中的所有字符都有一个大于-100或-99的位置或索引,因为0是字符串的第一个位置