It's quicker to build a set and test for membership than it is to build a list and do the same test:
With the overhead of hashing and the more complex data structure I expected a set to be slower than a linear search of a short list, in this example at least, but it turns out that sets are faster for even just a couple of elements, and it only gets worse as the element count goes up.
The one time a list is faster is when the element being looked for is the very first:
YMMV. For example, objects with custom
__hash__ implementations may skew the results back in favour of using a list or tuple. Running within pypy may even eliminate the difference altogether.