如何在列表中查找并在另一个列表中替换(python)?

如何在列表中查找并在另一个列表中替换(python)?,python,list,replace,Python,List,Replace,例如:要在中查找重复的“a” list = ["b","a","a","d"] 并将其替换到另一个列表中: second_list = ["_","_","_","_"] 因此,第二个_列表将转换为: ["_","a","a","_"] 我该怎么做? 想要一个没有zip的解决方案,正在使用 guessed\u word[列出的单词索引(player\u guess)]=player\u guess 但是重复项会产生一个bug,不管怎样,尽管zip()?您可以将zip()与列表理解相结合,并

例如:要在中查找重复的
“a”

list = ["b","a","a","d"]
并将其替换到另一个列表中:

second_list = ["_","_","_","_"]
因此,第二个_列表将转换为:

["_","a","a","_"]
我该怎么做?
想要一个没有zip的解决方案,正在使用
guessed\u word[列出的单词索引(player\u guess)]=player\u guess

但是重复项会产生一个bug,不管怎样,尽管
zip()

您可以将
zip()
与列表理解相结合,并使用三元
if
语句从第一个列表中获取元素(如果它是您想要的),否则从第二个列表中获取元素

list = ["b","c","a","d"]
second_list = ["_","_","_","_"]
third_list = [(i if i == "a" else j) for (i, j) in zip(list, second_list)]
# ['_', '_', 'a', '_']
如果列表中有一个
“a”
,则输出:

['_', '_', 'a', '_']
['_', '_', '_', '_']
如果列表中的“a”是而不是,则输出:

['_', '_', 'a', '_']
['_', '_', '_', '_']
编辑:不建议使用固定长度的“\u”列表,因为每当将项目添加到
原始
时,必须将匹配的
“\u”
添加到
第二个\u列表
。要解决这个问题,我们可以这样做

second\u list=[“\u”]*len(原件)


这将创建一个N次的列表(N是原始列表中的项数)

这里我们首先检查,如果元素“a”出现在第一个列表中,如果是,那么我们在第一个列表中找到“a”的索引,并用“a”替换第二个列表中相应的索引元素


有多种方法,但您可以使用列表理解

list1 = list("bcad")
list2 = ["_" for x in l1]
key = "a"
list2_replaced = [item1 if item1 == key else item2 for item1, item2 in zip(list1,list2)] 
说明:

制作第一个列表(相当于列表1=[“b”、“c”、“a”、“d”])

列出第二个列表(可能已经存在于您的案例中)

定义要查找的键,如果不需要将“a”作为变量,也可以将其直接放入下面的列表中

key = "a"
迭代压缩列表;zip返回一个元组列表,每个元组包含列表1的第i个元素作为第一个条目(item1),列表2的第i个元素作为第二个条目(item2)。如果item1与密钥匹配,请将item1放在第二个列表中,否则使用已存在的项

list2_replaced = [item1 if item1 == key else item2 for item1, item2 in zip(list1,list2)] 

可能有更好的方法,但这应该有效。

请尝试下面的代码

list1 = ["b","c","a","d"]
list2 = ["_","_","_","_"]

for idx,i in enumerate(list1):
    if(i == "a"):
        list2[idx] = list1[idx]

请考虑添加您尝试的任何代码,并发现您发现的错误的意外行为。在stack中,我们会提出特定的问题,我们会在提出之前进行研究,如我们的指南所述:。谢谢
list2_replaced = [item1 if item1 == key else item2 for item1, item2 in zip(list1,list2)] 
list1 = ["b","c","a","d"]
list2 = ["_","_","_","_"]

for idx,i in enumerate(list1):
    if(i == "a"):
        list2[idx] = list1[idx]