我正在尝试比较 3 个不同列表的位置和元素,然后将它们保存在一个新列表中,如果同一位置的元素中至少有 2 个匹配。

例如:

a = [FF2, FF6, FC4]
b = [FB5, FB3, FC4]
c = [FF2, FB3, FM8]

Result = [FF2, FB3, FC4]

一开始,我使用以下代码来比较 2 个列表,并尝试将其调整为 3 个列表,方法是在for i1之后添加一个额外的 for 循环,并在我的 if 中添加一个或,但出现了可怕的错误(几乎是 10 倍以上)作为输出的预期值)。

for i, v in enumerate(a):
    for i1, v1 in enumerate(b):
        if (i==i1) & (v==v1):
            Result.append(v)

这是我目前的方法,它工作正常,但我不知道如何将匹配的值附加到我的Result列表中。

Result = list(x for x, (xa, xb, xc) in enumerate(zip(a, b, c))
     if xa == xb or xb == xc or xa == xc)

#1楼 票数:2

您可以通过消除使用enumerate()并仅使用zip来避免您遇到的问题。 然后我们检查zip创建的每个元组中的每个唯一元素,看看该元素的计数是否大于 1。如果是,我们将其附加到我们的返回列表中。 t.count()的使用解决了对不整洁xa == xb or xb == xc or 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']

#2楼 票数:2 已采纳

al = ['FF2', 'FF6', 'FC4']
bl = ['FB5', 'FB3', 'FC4']
cl = ['FF2', 'FB3', 'FM8']

res = []
for a,b,c in zip(al, bl, cl):
    if a == b or b == c or c == a:
        if a == b:
            res.append(a)
        elif b == c:
            res.append(b)
        elif c == a:
            res.append(c)

print(res)

您可以同时遍历 3 个列表并附加到结果列表中。 使用zip()

#3楼 票数:1

你可以做这样的事情,

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']

  ask by matilarab translate from so

未解决问题?本站智能推荐:

6回复

使嵌套列表的每个元素成为列表

我有一个嵌套列表说: 我希望输出是: 这就是我的想法,但我正在输出一个扁平的列表列表。 我想在 lst 中保持每个预定义列表的长度
3回复

使用列表推导查找列表中的元素,其中列表中的所有元素都是因子

我有一个数字列表,我从中提取了所有这些数字的常见因素。 例如,从列表b = [16, 32, 96] list_of_common_factors = [1, 8, 16, 2, 4] b = [16, 32, 96] ,我产生了list_of_common_factors = [1, 8,
2回复

如何删除列表中元素的国家/地区

我有一个包含不同公司名称的列表,我想从此列表中的元素中删除所有国家/地区名称。 我正在使用 pycountry 导入国家列表。 这让我得到了包含国家名称的公司列表,但现在我不完全确定如何删除它们。 这是如何为单个元素执行此操作的示例。 期望输出:
1回复

通过与第二个列表Python比较来从列表中删除项目[重复]

这个问题已经在这里有了答案: 从另外 6个答案中 删除一个列表中出现的所有元素 一个小例子。 我这里有两个带有数字的列表, ra和dec 。 我有第三个列表,也有一些数字,这里是quad 。 我想做的是删除quad的ra和dec值。 因此,在这里您
3回复

将For循环转换为列表理解:测试列表2中的元素是否与列表1中的元素部分匹配

这里有点像python / programming newbie, 我想出了2个嵌套的for循环代码,以测试第二个循环的元素是否与第一个列表中的元素部分匹配(或完全匹配),如果是,则将这些元素从第一个列表中删除。 这是代码: 这里的问题是我实际上并不想修改lst ,而是创建一个新
3回复

python - 在预定义的位置将值从一个列表插入另一个列表

在Python(3.5)中,如果我有一个这样的长列表: 还有一个较短的列表,其长度等于long_list中的'1',如下所示: 我如何创建一个新列表,将我的short_list的值“插入”我的long_list中的每个索引,其中有一个'1',为了保持一致性,用一些数字“替换”lo
1回复

将列表中的每个元素替换为字典列表中的另一个元素

简而言之,我需要做的是为列表中的每个元素从字典列表中获取相应的值并替换它例如...对于以下输入列表 我应该在那些字典列表中寻找 它应该输出 我写了一个代码......但是它不适用于第二个数据样本
3回复

优化计数列表中元素之间的变化

我有一些工作代码来跟踪列表元素之间的“变化”-这样,任何两个不相同的连续元素都会构成一个变化。 该代码在这里可能很容易理解。 第一个red到red不会触发任何更改,但是接下来的red到blue将会触发。 我也想统计每种颜色的变化。 这可以正常工作并正确输出{'black':