Python 更改列表中类似元素的多个实例
我目前正在尝试制作一个简单的刽子手游戏。对于本节,我试图用用户输入的字母替换虚线。然而,对于重复字母的单词,如“apple”和两个字母“p”,我遇到了一些问题 我的代码的简化示例: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
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', '_', '_']