Python 更改列表中类似元素的多个实例

Python 更改列表中类似元素的多个实例,python,python-3.x,list,Python,Python 3.x,List,我目前正在尝试制作一个简单的刽子手游戏。对于本节,我试图用用户输入的字母替换虚线。然而,对于重复字母的单词,如“apple”和两个字母“p”,我遇到了一些问题 我的代码的简化示例: word = ['a','p','p','l','e'] guess = 'p' line = ['_','_','_','_','_'] for char in word: if guess == char: index = int(word.index(char)) lin

我目前正在尝试制作一个简单的刽子手游戏。对于本节,我试图用用户输入的字母替换虚线。然而,对于重复字母的单词,如“apple”和两个字母“p”,我遇到了一些问题

我的代码的简化示例:

word = ['a','p','p','l','e']
guess = 'p'
line = ['_','_','_','_','_']
for char in word:
    if guess == char:
        index = int(word.index(char))
        line[index] = char
打印输出(行)将给出[“”,'p',“”,,“”],仅替换列表中的1个'p'。知道如何更换两个“p”吗?

使用

使用

输出

[“p”、“p”、“p”、“u”、“u”、“u”]

您可以执行以下操作:

word = ['a','p','p','l','e']
guess = 'p'
line = ['_','_','_','_','_']

for idx, char in enumerate(word):
    if guess == char:
        line[idx] = char

print(line) # ['_', 'p', 'p', '_', '_']
在同一行中使用


最好使用“line=[guess if char==guess else char for char in word]”来避免引入另一个字符串。@RonMarcelino首先更新了OP解决方案,其次通过列表理解来改进
line = [i if i == guess else '_' for i in word]
word = ['a','p','p','l','e']
guess = 'p'
line = ['_','_','_','_','_']

for idx, char in enumerate(word):
    if guess == char:
        line[idx] = char

print(line) # ['_', 'p', 'p', '_', '_']
line = [char if char == guess else '_' for char in word]
print(line) # ['_', 'p', 'p', '_', '_']