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.

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])
```

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow