使用列表理解获取2个列表中的公共元素(不重复)

时间:2018-07-31 15:49:45

标签: python python-3.x

假设您有2个列表[Python 3.x]:

x=[2,2,3,4,5,5,6]
y=[2,3,5,9,11]

我要完成的事情是我想仅使用列表理解来获得2个列表中的公共元素,而不会得到重复的元素。我希望有可能吗?!

在其他线程中,我看到了以下列表理解,可以完成任务,但也返回重复的元素:

>>> x=[2,2,3,4,5,5,6]
>>> y=[2,3,5,9,11]
>>> z=[t for t in x if t in y]
>>> z
[2, 2, 3, 5, 5]

我知道有很多解决方案可以使2个列表之间具有相同的元素。最常见的解决方案是执行一个设置交集,该交集恰好得到了我想要的,而无需重复元素。但是我只想使用列表理解来实现这一点,就像我之前说的那样。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用set

x=[2,2,3,4,5,5,6]
y=[2,3,5,9,11]
z=list(set([t for t in x if t in y]))
print (z)

输出

[2, 3, 5]

答案 1 :(得分:0)

如果您不介意额外的工作,则可以逐步遍历值的范围:

z = [t for t in range(min(x), max(x)+1) if t in x and t in y]

这会在一个列表的范围内进行迭代,而每个值恰好会考虑一次。