Python 比较3个不同列表的位置和元素
我试图比较3个不同列表的位置和元素,然后将它们保存在一个新列表中,如果相同位置的元素中至少有2个匹配 例如:Python 比较3个不同列表的位置和元素,python,list,for-loop,list-comprehension,Python,List,For Loop,List Comprehension,我试图比较3个不同列表的位置和元素,然后将它们保存在一个新列表中,如果相同位置的元素中至少有2个匹配 例如: a = [FF2, FF6, FC4] b = [FB5, FB3, FC4] c = [FF2, FB3, FM8] Result = [FF2, FB3, FC4] 开始时,我使用以下代码比较2个列表,并尝试将其调整为3个列表,方法是在i1的之后添加一个额外的for循环,并在if中添加一个or,但出现了可怕的错误(几乎是预期输出值的10倍) 这是我当前的方法,它工作正常,但我不知
a = [FF2, FF6, FC4]
b = [FB5, FB3, FC4]
c = [FF2, FB3, FM8]
Result = [FF2, FB3, FC4]
开始时,我使用以下代码比较2个列表,并尝试将其调整为3个列表,方法是在i1的之后添加一个额外的for循环,并在if中添加一个or,但出现了可怕的错误(几乎是预期输出值的10倍)
这是我当前的方法,它工作正常,但我不知道如何将匹配的值附加到我的结果
列表中
Result = list(x for x, (xa, xb, xc) in enumerate(zip(a, b, c))
if xa == xb or xb == xc or xa == xc)
您可以通过取消使用enumerate()
和只使用zip
来避免出现的问题。然后,我们检查由zip
创建的每个元组中的每个唯一元素,并查看该元素的计数是否大于1。如果是这样的话,我们会将其添加到退货清单中。使用t.count()
解决了不整洁的xa==xb或xb==xc或xa==xc
条件的需要,并使其易于扩展到n
列表
代码:
a = ['FF2', 'FF6', 'FC4']
b = ['FB5', 'FB3', 'FC4']
c = ['FF2', 'FB3', 'FM8']
r = [x for t in zip(a, b, c) for x in set(t) if t.count(x) > 1]
>>> r
['FF2', 'FB3', 'FC4']
输出:
a = ['FF2', 'FF6', 'FC4']
b = ['FB5', 'FB3', 'FC4']
c = ['FF2', 'FB3', 'FM8']
r = [x for t in zip(a, b, c) for x in set(t) if t.count(x) > 1]
>>> r
['FF2', 'FB3', 'FC4']
您可以同时遍历这3个列表&附加到结果列表中。使用zip()
a = ["FF2", "FF6", "FC4"]
b = ["FB5", "FB3", "FC4"]
c = ["FF2", "FB3", "FM8"]
result = []
for idx in range(len(a)):
if a[idx] == b[idx] or a[idx] == c[idx]:
result.append(a[idx])
elif b[idx] == c[idx]:
result.append(b[idx])
else:
pass
print(result)
输出将是
['FF2', 'FB3', 'FC4']