在python中交叉两个单词列表

时间:2011-06-21 19:39:20

标签: python list

我想在python中找到两个列表的交集。我有一些看起来像这样的东西:

>>> q = ['apple', 'peach', 'pear', 'watermelon', 'strawberry']
>>> w = ['pineapple', 'peach', 'watermelon', 'kiwi']

我希望找到这样的东西:

t = ['peach', 'watermelon']

我知道这是一个简单的问题,但我对python不熟悉 - 有没有人有任何建议?

3 个答案:

答案 0 :(得分:10)

intersection()方法适用于sets,可以从列表中轻松制作。

ETA:如果你想要一个清单......

q = ['apple', 'peach', 'pear', 'watermelon', 'strawberry']
w = ['pineapple', 'peach', 'watermelon', 'kiwi']
t = list(set(q) & set(w))

现在是:

['watermelon', 'peach']

答案 1 :(得分:4)

首选方法是通过set intersection

list(set(q) & set(w))

如果列表很短,则list comprehension应该有效。

t = [x for x in q if x in w]

但是,请注意,这是O(n^2),因此对于长列表效率不高。

答案 2 :(得分:1)

这里讨论的是intersection工作得更快,所以你可以使用:

q = ['apple', 'peach', 'pear', 'watermelon', 'strawberry']
w = ['pineapple', 'peach', 'watermelon', 'kiwi']
set(q).intersection(w)