首页 > 解决方案 > 显示 IndexError 的列表理解

问题描述

我正在创建一个刽子手游戏。我想出了一个用字母代替下划线的想法。首先,用户输入他们的猜测(在本例中为字母“c”)。我搜索一个包含未知单词字母的列表,创建一个列表,其中包含每次命中该字母时的索引。然后我搜索下划线列表并使用我创建的索引列表将所有下划线替换为字母。但是,我收到一个错误:

IndexError:列表索引超出范围。

我在下面的代码中做错了什么?

y = "cctcc"
to_modify = ["_", "_", "_","_", "_"]
replacements = list(y)

user_input = input()
indexes = [i for i, j in enumerate(replacements) if j == user_input]
print(indexes)
for index in indexes:
  to_modify[indexes[index]] = replacements[index]

print(to_modify)

输出:

[0, 1, 3, 4]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-25-be2b07a156e5> in <module>()

     10 print(indexes)

     11 for index in indexes:

---> 12   to_modify[indexes[index]] = replacements[index]

     13 

     14 print(to_modify)


IndexError: list index out of range

标签: pythonlistlist-comprehension

解决方案


这部分代码已经在索引上循环:

for index in indexes:
    to_modify[indexes[index]] = replacements[index]

如果indexescontains [0,1,3,4],当index循环到4它试图访问indexes[4]超出范围时,只需使用您从循环中获得的索引:

for index in indexes:
    to_modify[index] = replacements[index]

推荐阅读