pop()错误:索引超出范围python

时间:2017-11-17 01:06:42

标签: python python-3.x

有人可以解释为什么我得到列表索引超出范围错误???我不明白为什么,感谢任何帮助。

 original_alphabet = "abcdefghijklmnopqrstuvwxyz"
 original_alphabet_list = []
 for char in original_alphabet:
  original_alphabet_list.append(char)

 keyword_list = []
 for char in keyword:
  keyword_list.append(char)

 for value in keyword_list:
  for index in range(26):
   if value == original_alphabet_list[index]:
    original_alphabet_list.pop(index)

1 个答案:

答案 0 :(得分:0)

您收到list index out of range错误,因为您要从正在迭代的同一列表中删除元素:

original_alphabet_list.pop(index)

这类似于切断你坐在角落里的树的同一分支!自然的结果是你会掉下来。

删除元素时,original_alphabet_list中的索引会重新排列,因此无法在原始列表中找到作为索引的错误。为了将来参考,无论何时想要遍历数组或字典,都可以通过在迭代上切片来制作副本,如下所示:

for value in keyword_list[:]:
    for index in range(26):
        if value == original_alphabet_list[index]: original_alphabet_list.pop(index)