[Python-Dev] Range contains and objects with index methods (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Mon Dec 27 01:15:45 CET 2010


Starting in Python 3.2, range() supports fast containment checking for integers (i.e. based on an O(1) arithmetic calculation rather than an O(N) iteration through the entire sequence).

Currently, this fast path ignores objects that implement index - they are relegated to the slow iterative search.

This seems wrong to me - the semantics of index are such that it is meant to be used for objects that are alternative representations of the corresponding Python integers (e.g. numpy scalars, or integers that use a particular number of bits in memory). Under that interpretation, if an object provides index, we should use the fast path instead of calling eq multiple times.

Thoughts?

Regards, Nick.

-- Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia



More information about the Python-Dev mailing list