我试图为三个不同的列表找到共同的值列表:
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]
当然,我会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
中的每个元素迭代列表b
和c
,因此对于较长的列表,这将大大降低效率.