Python List VS Set
Overview
Sets are significantly faster (almost O(1)) when it comes to determining if an object is present in the set (as in x in s), but are slower than lists when it comes to iterating over their contents.
Implemented of Set
So basically a set uses a hashtable as its underlying data structure. This explains the O(1) membership checking, since looking up an item in a hashtable is an O(1) operation, on average.
When people say sets have O(1) membership-checking, they are talking about the average case. In the worst case (when all hashed values collide) membership-checking is O(n). See the Python wiki on time complexity
References
https://stackoverflow.com/questions/2831212/python-sets-vs-lists
https://stackoverflow.com/questions/3949310/how-is-set-implemented/3949350#3949350