python3.x:索引超出范围

时间:2017-05-31 19:04:32

标签: python

for i in range(len(text_list)):
    for j in range(len(text_list[i])):
        if text_list[i][j] in ban:
            text_list[i]=text_list[i][:j]

第三行出现错误。 我不知道该怎么办。 我认为不应该有任何错误..

3 个答案:

答案 0 :(得分:1)

此行会更改text_list[i]

的长度
text_list[i]=text_list[i][:j]

因此for j ...的下一次迭代无效。修改text_list后,您应该break转到下一个更高的for i ...循环。

答案 1 :(得分:1)

您正在迭代期间修改列表。如果你的if条件成功,你将削减该行的其余部分。所以在下一次迭代中,你会遇到一个超出界限的错误。这与写作基本相同:

arr = [1, 2, 3]
for i in range(len(arr)):
  print(arr[i])
  arr = arr[:i] # could be simply arr = []

答案 2 :(得分:0)

在迭代期间永远不会改变您的列表,因为您的索引将会发生变化。而是创建一个新列表,也许看看列表理解:http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html