one-liner to check if at least one item in list exists in another list?

python

Solution

There are many ways to do this. The most direct translation is:

any_in = lambda a, b: any(i in b for i in a)

You could also use various things involving sets, such as:

any_in = lambda a, b: bool(set(a).intersection(b))

(which depends on the elements of `a` being hashable, but if that's true, it'll probably be faster to make a set of the larger out of `a` and `b` for either of these approaches).

Edit: `isdisjoint` is better than `intersection` for Python 2.6 and above, as noted by various people below. Glad to learn about that. :)

Problem

Lets say I have a list `a=[1,2,3]` And I want to know if at least one of the numbers in it exist in another list, like this one: `b=[4,5,6,7,8,1]` In other words, I want to know if 1,2 or 3 exist(s) in list `b`. I now I could do something like ``` def func(a, b): for i in a: if i in b: return True return False ``` But is there possibly a way to put that in one line to make things tidy?

Original source

Related problems