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® [EMAIL PROTECTED] 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 -- http://mail.python.org/mailman/listinfo/python-list