On May 21, 9:21 am, mosscliffe <[EMAIL PROTECTED]> wrote: > On 21 May, 15:02, [EMAIL PROTECTED] wrote: > > > mosscliffe: > > > > if key in xrange (60,69) or key == 3: > > > I keep seeing again and again code like this, mostly from people not > > much expert of Python, but the PEP 260 shows the fast in was removed, > > so it's O(n). Maybe removing the fast __contains__ was bad for > > necomers (or just the casual Python users, that I belive is really > > large). > > > Bye, > > bearophile > > Being a non-expert in python in fact just a beginner / casual user, > can you expand on how 0(n) relates to > if key in xrange (60,69) or key == 3:
the "key in xrange(60,69)" part: all that does is iterate through xrange(60, 69) and when a match is met, it returns true. If it ends up iterating through the whole list without finding a match, it returns false. > My mind tends to go blank at the mention of __xxx__. The above is the default behavior of the 'in' operator. That default behavior can be overridden by a class that has the __contains__ method. So "XXX in YYY" expands roughly to the following (as I understand it; I haven't actually looked it up): if hasattr(YYY, "__contains__"): return YYY.__contains__(XXX) else: for i in YYY: if XXX == YYY: return True return False > R -- http://mail.python.org/mailman/listinfo/python-list