I'm starting to think like a Pythonista
Erik Jones
erik at myemma.com
Wed Oct 10 23:11:01 EDT 2007
On Oct 10, 2007, at 4:16 PM, Marc 'BlackJack' Rintsch wrote:
> On Wed, 10 Oct 2007 17:03:41 -0400, brad wrote:
>
>> Bjoern Schliessmann wrote:
>>> brad wrote:
>>>> low_odds = [1,3,5,7,9]
>>>> # make a list containing 10 - 98 evens only
>>>> big_evens = big_evens = [x for x in list(xrange(99)) if x % 2 ==
>>>> 0 and x >8]
>>>
>>> Why use xrange if you convert it to a full list in place? No
>>> advantage there.
>>
>> What is the dis-advantage of using xrange over range in this
>> circumstance?
>
> It's an unnecessary intermediate step.
Exactly, there's no disadvantage, but the use case for xrange is for
when there is an advantage. xrange is a lazy generator, which means
that the values in the range are generated one by one, i.e. the
entire range is never present in memory all at once. If all your
doing is building that list then there's no advantage. In fact, [x
for x in xrange(99)] can be though of as longhand for range(99). Put
another way, xrange returns a generator of successive, individual
numbers over a range (optionally with a step) while range returns a
list of numbers over a range (optionally with a step).
>>> l = xrange(99)
>>> m = range(99)
>>> type(l)
<type 'xrange'>
>>> type(m)
<type 'list'>
Erik Jones
Software Developer | Emma®
erik at myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)
Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com
More information about the Python-list
mailing list