基于另一个列表的索引替换列表对象(Python)

基于另一个列表的索引替换列表对象(Python),python,list,indexing,Python,List,Indexing,我正在编写一个程序,与用户一起扮演刽子手。目前,它有两个列表:一个列表包含单词的可变版本,另一个列表包含用户猜测的“状态”。因此,如果这个词是“python”: 我的计划是,在每次输入(“输入guess:”)后,我可以根据猜测在“单词”列表中的索引,用猜测替换“\ux”。(这有意义吗?!) 然后,在每次猜测之后,我可以打印(“.join(status))这样用户就可以看到他们的进展了 我做了一些研究,发现了方法list.index(x),但我读到它返回值为x的第一项的索引 以下是我希望该程序如何

我正在编写一个程序,与用户一起扮演刽子手。目前,它有两个列表:一个列表包含单词的可变版本,另一个列表包含用户猜测的“状态”。因此,如果这个词是“python”:

我的计划是,在每次
输入(“输入guess:”)
后,我可以根据猜测在“单词”列表中的索引,用猜测替换“\ux”。(这有意义吗?!)

然后,在每次猜测之后,我可以
打印(“.join(status))
这样用户就可以看到他们的进展了

我做了一些研究,发现了方法
list.index(x)
,但我读到它返回值为x的第一项的索引

以下是我希望该程序如何工作的示例:

word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]

Enter guess: t
_ _ t _ _ _

Enter guess: n
_ _ t _ _ n
等等等等(不要担心循环等等,因为我已经记下来了:)我只是不知道如何根据另一个列表的索引编辑一个列表!)

我不打算修改“word”,这样最终我可以比较“status”和“word”来检查用户是否赢了,但我愿意接受所有建议!!:D

谢谢

这应该行得通:

word = ['p','y','t','h','o','n']
user_letter = raw_input("Enter a letter\n")

status = ['_' for i in xrange(len(word))]
for index, ltr in enumerate(word):
     if ltr == user_letter:
         status[index] = user_letter

这假设
用户字母
的长度为1。当然,这是您可以自己确保的。

您可以使用列表获得值为
x
的所有索引:

indices = [i for i, elem in enumerate(word) if elem == x]
所以你会:

>>> word = ["p", "y", "t", "h", "o", "n"]
status = ["_", "_", "_", "_", "_", "_"]
>>> >>> word
['p', 'y', 't', 'h', 'o', 'n']
>>> status
['_', '_', '_', '_', '_', '_']
然后,用户进行猜测,假设我们有
guess='t'
,然后:

>>> guess = 't'
>>> indices = [i for i, x in enumerate(word) if x == guess]
>>> indices
[2]
然后,我们改变状态列表以显示找到的索引:

for i in indices:
    status[i] = guess
然后,我们可以将
状态
显示为字符串:

print(' '.join(status))
_ _ t _ _ _

“我[…]遇到了方法list.index(x),但我读到它返回第一个值为x的项的索引。”-这正是您需要的。您可以循环查找所有发生的事件。给我们看看你的代码,太棒了!谢谢我对列表的理解总是有问题。。。但我只花了5周的时间使用Python:)
print(' '.join(status))
_ _ t _ _ _