使用列表理解获得2个列表中的常见(不重复)元素



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

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

我想实现的是,我想得到这两个列表中的共同元素,而不需要得到重复的元素,只需要使用列表理解。我希望这是可能的?!

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

>>> 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]

我知道有很多解决方案可以在两个列表之间获得公共元素。最常见的解决方案是做一个集合交集,它完全符合我的要求,没有重复的元素。但正如我之前所说,我只想通过列表理解来实现这一点。

提前感谢!

如果你不介意额外的工作,你可以逐步通过值的范围:

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

这在一个列表的范围内迭代,每个值只考虑一次。

使用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]

相关内容

最新更新