为什么 python 字符串中的负索引没有按预期结果?
Why does not the negative indices in python strings result as expected?
我在 python 中创建了一个字符串:'HelpA' 并将其标记为单词。
>>>word='HelpA'
>>>word
'HelpA' #expected string
>>>word[0:4]
'Help' #expected string
使用负索引调用单词时,我得到的是完整的字符串,而不是预期的部分字符串。
>>>word[-97:]
'HelpA' #not the expected string
它给出了整个字符串而不是预期的字符串:'pA'
为什么会这样?
您似乎希望负指数为 'wrap'。 (97% len(单词)== 2)。
没有:)
这个例子告诉你原因:
>>> word[-1:]
'A'
>>> word[-3:]
'lpA'
>>> word[-5:]
'HelpA'
>>> word[-10:]
'HelpA'
当负索引超出字符串的长度时,它将被截断。 Python 文档的 This 部分解释如下:
The slice of s from i to j is defined as the sequence of items with index k such that 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)
输出:
>>> slice('foo', -100, 2)
'fo'
>>> 'foo'[-100:2]
'fo'
这应该清楚为什么word[-100:]
和word[-99:]
给出相同的结果:字符串中所有字符的位置或索引都大于-100或-99,因为 0 是字符串的第一个位置
你要求的是最后 97 个字符。 没有那么多,但是 Python 很好玩,尽可能多地给你,这是最后 5 个字符(即全部)。
我在 python 中创建了一个字符串:'HelpA' 并将其标记为单词。
>>>word='HelpA'
>>>word
'HelpA' #expected string
>>>word[0:4]
'Help' #expected string
使用负索引调用单词时,我得到的是完整的字符串,而不是预期的部分字符串。
>>>word[-97:]
'HelpA' #not the expected string
它给出了整个字符串而不是预期的字符串:'pA'
为什么会这样?
您似乎希望负指数为 'wrap'。 (97% len(单词)== 2)。
没有:)
这个例子告诉你原因:
>>> word[-1:]
'A'
>>> word[-3:]
'lpA'
>>> word[-5:]
'HelpA'
>>> word[-10:]
'HelpA'
当负索引超出字符串的长度时,它将被截断。 Python 文档的 This 部分解释如下:
The slice of s from i to j is defined as the sequence of items with index k such that 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)
输出:
>>> slice('foo', -100, 2)
'fo'
>>> 'foo'[-100:2]
'fo'
这应该清楚为什么word[-100:]
和word[-99:]
给出相同的结果:字符串中所有字符的位置或索引都大于-100或-99,因为 0 是字符串的第一个位置
你要求的是最后 97 个字符。 没有那么多,但是 Python 很好玩,尽可能多地给你,这是最后 5 个字符(即全部)。