What (if any) performance advantages are offered by using iterators. It seems like the \'Right Way\' to solve many problems, but does it create faster/more memory-conscious
To backup the @Christian Witts's answer:
range vs. xrange performancepython25 -mtimeit "for i in xrange(1000): pass"
10000 loops, best of 3: 56.3 usec per loop
python25 -mtimeit "for i in range(1000): pass"
10000 loops, best of 3: 80.9 usec per loop
python26 -mtimeit "for i in xrange(1000): pass"
10000 loops, best of 3: 48.8 usec per loop
python26 -mtimeit "for i in range(1000): pass"
10000 loops, best of 3: 68.6 usec per loop
btw, neither range() nor xrange() are iterators:
>>> hasattr(range(1), 'next')
False
>>> hasattr(xrange(1), 'next')
False
>>> iter(xrange(1))
>>> iter(range(1))
>>> iter([])
>>> iter(i for i in (1,))
>>> (i for i in (1,))