IndexError:列表索引超出范围
我正在寻找列表中加倍的字符串,如果有重复,希望将其删除。因此,我使用if语句检查列表中的元素是否等于下一个元素,然后删除if ture。但是出乎意料的是,当我使用del list [i]代码返回错误时。
for i in range(len(formatted_text)-1):
if(formatted_text[i] == formatted_text[i+1]):
# formatted_text[i+1] = ''
print(len(formatted_text)) # it is equal to 11
print(i) # the repetition is at 4 and 5 element
del formatted_text[i] # removal instruction
我希望它可以正常执行,不知道问题出在哪里。当我无循环检查时,它可以正常工作。
编辑: 我设法解决了这个问题。不幸的是(len(formatted_text)-2,0,-1)如果重复出现在列表的开头,则不起作用。这是可以正常工作并且友好的代码:
for i in range(len(formatted_text)-1):
if(formatted_text[i] == formatted_text[i+1]):
formatted_text[i+1] = ''
formatted_text.remove('')
答案 0 :(得分:0)
一旦删除formatted_text
的元素,开始时的元素就没有那么多了,但是循环将继续进行。
答案 1 :(得分:0)
您的循环已设置为可以运行这么多次迭代:
range(len(formatted_text)-1)
如果您从列表中删除项目,则此范围将大于您要检查的项目数,因此会看到超出范围的错误。