为什么python字符串中的负索引没有达到预期的结果?
我在python中创建了一个字符串:“HelpA”,并将其标记为word为什么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 它
>>>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'