[Python-Dev] Proposed iterator representations (original) (raw)
Raymond Hettinger python at rcn.com
Thu Apr 8 22:37:18 EDT 2004
- Previous message: [Python-Dev] PEP 318: Security use case
- Next message: [Python-Dev] Proposed iterator representations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I checked in two itertool representations that were clear-cut:
from itertools import count, repeat count(20) count(20) repeat(None, 12) repeat(None, 12)
For xrange iterators, there are a few choices:
it = iter(xrange(10, 20, 2)) iter(xrange(10, 20, 2)) or rangeiterator(10, 20, 2) or
The first is my favorite. Though odd looking, it can be run through eval() and is completely self-documenting. The second has the virtue of using the actual type name but it cannot be run through eval(). The third is closer to the current format but adds some information.
For dictionaries, lists, tuples, and reversed, there are similar choices but the eval() version can only be supported with a full listing of the parent object:
iter(dict(a=1, b=2, c=3, d=4, e=5)) iter(dict.fromkeys(['a', 'c', 'b', 'e', 'd'])) or <dictionary-keyiterator object: 'a', 'c', 'b', ...>
dict(a=1, b=2, c=3, d=4, e=5).iteritems() dict([('a', 1), ('c', 3), ('b', 2), ('e', 5), ('d', 4)]).iteritems() or <dictionary-itemiterator object: ('a', 1), ('c', 3), ('b', 2) ...>
reversed('abcde') reversed(['a', 'b', 'c', 'd', 'e']) or <reversed object: 'e', 'd', 'c', ...>
What do you guys think?
Raymond Hettinger
- Previous message: [Python-Dev] PEP 318: Security use case
- Next message: [Python-Dev] Proposed iterator representations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]