How can I compare two lists in python and return matches How can I compare two lists in python and return matches python python

# How can I compare two lists in python and return matches

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).

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

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

A quick performance test showing Lutz's solution is the best:

``import timedef speed_test(func):    def wrapper(*args, **kwargs):        t1 = time.time()        for x in xrange(5000):            results = func(*args, **kwargs)        t2 = time.time()        print '%s took %0.3f ms' % (func.func_name, (t2-t1)*1000.0)        return results    return wrapper@speed_testdef compare_bitwise(x, y):    set_x = frozenset(x)    set_y = frozenset(y)    return set_x & set_y@speed_testdef compare_listcomp(x, y):    return [i for i, j in zip(x, y) if i == j]@speed_testdef compare_intersect(x, y):    return frozenset(x).intersection(y)# Comparing short listsa = [1, 2, 3, 4, 5]b = [9, 8, 7, 6, 5]compare_bitwise(a, b)compare_listcomp(a, b)compare_intersect(a, b)# Comparing longer listsimport randoma = random.sample(xrange(100000), 10000)b = random.sample(xrange(100000), 10000)compare_bitwise(a, b)compare_listcomp(a, b)compare_intersect(a, b)``

These are the results on my machine:

``# Short list:compare_bitwise took 10.145 mscompare_listcomp took 11.157 mscompare_intersect took 7.461 ms# Long list:compare_bitwise took 11203.709 mscompare_listcomp took 17361.736 mscompare_intersect took 6833.768 ms``

Obviously, any artificial performance test should be taken with a grain of salt, but since the `set().intersection()` answer is at least as fast as the other solutions, and also the most readable, it should be the standard solution for this common problem.