我试图为三个不同的列表找到共同的值列表:

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

当然,我会try 使用and运算符,但这样我只得到表达式中最后list的值:

>> a and b and c
out: [3,4,5,6]

找到通用值列表的捷径是:

[3,4]

Br

推荐答案

使用集合:

>>> a = [1, 2, 3, 4]
>>> b = [2, 3, 4, 5]
>>> c = [3, 4, 5, 6]
>>> set(a) & set(b) & set(c)
{3, 4}

或者正如乔恩所说:

>>> set(a).intersection(b, c)
{3, 4}

使用集合的好处是,不需要重复迭代原始列表.每个列表迭代一次以创建集合,然后集合相交.

像Geotob那样使用过滤列表理解来解决这个问题的简单方法是,对a中的每个元素迭代列表bc,因此对于较长的列表,这将大大降低效率.

Python-3.x相关问答推荐

使用pybind11时,在sys.exit(0)处成功完成测试后,Python单元测试冻结

如何从拼图分区数据集中读取数据到Polar

如何从选定的html内容中获取所需的文本

如何将参数/值从测试方法传递给pytest的fixture函数?

基于组/ID从原始数据框中创建两个子数据框

在 python f-string 中使用 \u

Keras 中 Conv2D 层的意外结果

如何使用复选按钮更改 Pyplot 轴的属性?

过滤查询集和Q运算符的不同值

使用 pandas 进行多类分类的总体准确度

机器学习实验笔记本的工作区 url

`pyspark mllib` 与 `pyspark ml` 包

预分配一个无列表

多个返回函数的列表理解?

Seaborn 热图 colored颜色 条标签作为百分比

tensorflow 中 numpy.newaxis 的替代方案是什么?

为什么中断比引发异常更快?

在 Python 3 中调用 super() 的 4 种方法中的哪一种?

如何在 QGraphicsView 中启用平移和zoom

Python:如何在 Windows 资源管理器中打开文件夹(Python 3.6.2、Windows 10)