提问者:小点点

比较两个列表,如果相等,替换第三个列表中的值


我目前正在做一个Python的在线初学者课程,并被这一元素困住了。

我有
lista=['a','d','g','p','l','g','r','e']

listb=['a','p','p','l','e']

listc=['','','','_']

我正在比较列表a中的字母,看看它们是否在列表B中,如果为真,则用该字母替换列表C中的相同索引。下面的代码在一个函数中:

null

for a in listA:
        for b in listB:
            if a==b:
                listC.append(listB.index(b))
    stringC = str(listC)    
    print(stringC)  
    

null

问题是列表C被追加到正确的位置,但是使用了索引的int值。

如何替换字母而不是索引值?

非常感谢!


共3个答案

匿名用户

您应该使用:

listA=['a','d','g','p','l','g','r','e']

listB=['a','p','p','l','e']

listC=['','','','','_']

for a in range(len(listA)):
    letter = listA[a]
    if letter in listB:
        listC[listB.index(letter)] = letter
stringC = str(listC)
print(stringC)

它更快,更容易理解,而且有效(尽管我不完全确定我理解了你的问题)。

匿名用户

假设我理解这个问题,您不希望追加到listc,而是希望修改listc的元素:

for a in listA:
    if a in listB:
        listC[listB.index(a)] = a

匿名用户

如果您正在搜索并试图比较字符的位置

listA=['a','d','g','p','l','g','r','e']

listB=['a','p','p','l','e']

listC=['','','','','_']

minlen = min(len(listA), len(listB))
for elem in range(minlen):
    if listA[elem] == listB[elem]:
        listC[listB.index(listA[elem])] = listA[elem]
print("{}".format(listC))

如果只检查它们是否可用,Wiseman的答案看起来不错