python - 在python中取任意数量列表的交集

标签 python algorithm list intersection

假设我有一个全部相同的元素列表列表(在此示例中我将使用 int)

[range(100)[::4], range(100)[::3], range(100)[::2], range(100)[::1]]

什么是获取这些列表的交集的好方法和/或有效的方法(这样你就可以得到每个列表中的每个元素)? 例如:

[0, 12, 24, 36, 48, 60, 72, 84, 96]

最佳答案

使用集合,集合有交集方法。

>>> s = set()
>>> s.add(4)
>>> s.add(5)
>>> s
set([4, 5])
>>> t = set([2, 4, 9])
>>> s.intersection(t)
set([4])

以你的例子为例,类似

>>> data = [range(100)[::4], range(100)[::3], range(100)[::2], range(100)[::1]]
>>> sets = map(set, data)
>>> print set.intersection(*sets)
set([0, 96, 36, 72, 12, 48, 84, 24, 60])

关于python - 在python中取任意数量列表的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893500/

相关文章:

python - 为什么这段 python 代码不是线程安全的?

Python套接字: Server waits for nothing when asked to 'recv' and then 'sendall'

arrays - 如何在 Swift 4 中将金字塔类型的字符串转换为 double 组

Python 追加函数没有按预期工作

python - 计算列表中数字平方和的函数

python - 我正在尝试使用另一个由值组成的数据框创建一个新的数据框

algorithm - 之前和之后的集合发生了什么变化

c++ - Karp Rabin 中的质数和 block 长度

c# - 在 LINQ C# 中使用 OR 条件

python - 如何跳过标准输入的第一行读取?