New submission from Joseph Thomson <joseph.thom...@gmail.com>:

The range type should implement the __contains__ method.  Currently an
expression like 'x in range(10000000)' will iterate through every item
in the range (exiting when an item tests true for equality); this is
highly unnecessary as the following expression will perform the same
function in a fraction of the time:

value >= start and value < stop and (value - start) % step == 0

The biggest advantage of this modification would be to allow users to say:

if foo in range(lower, upper):
   bar()

instead of:

if foo >= lower and foo < upper:
   bar()

safe in the knowledge that they are losing no performance.  The former
is also far more Pythonic in my opinion :).

If there is still any doubt (which I doubt), I have attached an example
script showing what is to be gained.

----------
components: Interpreter Core
files: range.py
messages: 92183
nosy: hpesoj
severity: normal
status: open
title: Add __contains__ to range type
type: performance
versions: Python 3.2
Added file: http://bugs.python.org/file14821/range.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6826>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to