How can I compare two lists in python and return matches


Question

I want to take two lists and find the values that appear in both.

a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

returnMatches(a, b)

would return [5], for instance.

1
327
9/7/2009 11:13:45 AM

Accepted Answer

Not the most efficient one, but by far the most obvious way to do it is:

>>> a = [1, 2, 3, 4, 5]
>>> b = [9, 8, 7, 6, 5]
>>> set(a) & set(b)
{5}

if order is significant you can do it with list comprehensions like this:

>>> [i for i, j in zip(a, b) if i == j]
[5]

(only works for equal-sized lists, which order-significance implies).

408
9/7/2009 11:10:46 AM

Use set.intersection(), it's fast and readable.

>>> set(a).intersection(b)
set([5])

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon