假设您有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个列表之间具有相同的元素。最常见的解决方案是执行一个设置交集,该交集恰好得到了我想要的,而无需重复元素。但是我只想使用列表理解来实现这一点,就像我之前说的那样。
谢谢!
答案 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]
这会在一个列表的范围内进行迭代,而每个值恰好会考虑一次。