在Python中交集两个单词列表

6 投票
3 回答
7530 浏览
提问于 2025-04-16 20:01

我想在Python中找到两个列表的交集。我有一个像这样的东西:

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

我想找到一个像这样的东西:

t = ['peach', 'watermelon']

我知道这是个简单的问题,但我刚学Python——有没有人能给我一些建议?

3 个回答

2

在这里的讨论中提到,交集(intersection)的速度稍微快一些,所以你可以使用:

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

推荐的做法是通过 集合交集 来实现:

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

如果列表比较短,使用 列表推导式 也可以。

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

不过要注意,这种方法的效率是 O(n^2),所以在处理长列表时效率不高。

11

intersection() 方法可以用在 集合 上,而集合是可以很简单地从列表中创建出来的。

补充说明:如果你想从中得到一个列表……

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

现在 t 是:

['watermelon', 'peach']

撰写回答