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



有人可以解释为什么我得到一个超出范围的列表索引错误吗???我不明白为什么,任何帮助都是不胜感激的。

 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)

您收到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)

最新更新