【问题标题】:Compare multiple lists inside a list Python [duplicate]比较列表Python中的多个列表[重复]
【发布时间】:2019-04-04 20:20:04
【问题描述】:

是否有可能以比我所做的更简洁(又名更短)的方式比较包含未知数量列表和相同元素的列表?最好是单线!

如果不清楚我想做什么,这里是一个例子:

a = [1, 2, 3]
b = [4, 2, 1]
c = [7, 5, 1]
d = [a, b, c]

def multiCompList(lists):
    final = [i for i in lists[0] if i in lists[1]]
    for i in range(2, len(lists)):
        final = [i for i in final if i in lists[i]]

    return final

print(multiCompList(d))

我所做的是首先检查第一个和第二个列表是否包含任何相等的元素,并将它们放入一个名为 final 的列表中。此后,检查是否可以在之后的列表中找到这些元素,并用剩余的相等元素替换最终列表。 这种情况下的结果是:[1]。

【问题讨论】:

  • 你想找到所有列表的交集吗?顺序重要吗?
  • @Chris_Rands 不,我猜前两个列表的交集和第三到第 n 个列表的交集。所以不仅仅是所有列表的交集
  • 也许你可以在这里应用你的学习stackoverflow.com/questions/3852780/…
  • 你的示例和解释是切线的。你想从所有列表中获取共同值吗?
  • 谢谢@RahulChawla。正是我想要的!

标签: python list-comprehension


【解决方案1】:

oneliner 看起来像这样:

set.intersection(*[set(x) for x in d])
#set([1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2019-09-22
    • 1970-01-01
    • 2022-06-11
    • 2018-11-09
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多