为什么python字符串中的负索引没有达到预期的结果?

为什么python字符串中的负索引没有达到预期的结果?,python,string,indices,Python,String,Indices,我在python中创建了一个字符串:“HelpA”,并将其标记为word >>>word='HelpA' >>>word 'HelpA' #expected string >>>word[0:4] 'Help' #expected string 在使用负索引调用单词时,我得到的是完整字符串,而不是预期的部分字符串 >>>word[-97:] 'HelpA' #not the expected string 它

我在python中创建了一个字符串:“HelpA”,并将其标记为word

>>>word='HelpA'

>>>word

'HelpA' #expected string

>>>word[0:4]

'Help' #expected string
在使用负索引调用单词时,我得到的是完整字符串,而不是预期的部分字符串

>>>word[-97:]

'HelpA'  #not the expected string

它给出的是整个字符串,而不是预期的字符串:
'pA'
为什么会发生这种情况?

看起来您希望负索引为'wrap'。(97%长度(字)==2)

它没有:)

此示例向您展示了原因:

>>> word[-1:]
'A'
>>> word[-3:]
'lpA'
>>> word[-5:]
'HelpA'
>>> word[-10:]
'HelpA'
当负索引超出字符串长度时,它将被截断。Python文档的一节对此进行了如下解释:


从i到j的s片段被定义为索引为k的项目序列,因此i您要求的是最后97个字符。没有那么多,但Python表现不错,只提供了尽可能多的内容,即最后5个字符(即全部).

为什么在用
[-97:]
对其进行索引时,您希望得到
pA
?您从何处得出值
-97
?在您的示例中
word[0:4]=“Help”
,而不是
“Help”
@Babu:不,切片索引不包装;它们由实际的字符串索引限定
len(word)-97
-92
,然后由实际的起始索引
0
@MartijnPieters绑定,我想说负索引被添加到
len(word)
。在这种情况下,请解释:>>word[-100:'HelpA'>>word[-99:]“HelpA”或者应该是什么字符串?@Babu我已经用一个例子更新了答案。我希望它能澄清。
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'