On 8/20/2010 5:44 AM, Steven D'Aprano wrote:
On Fri, 20 Aug 2010 06:10:59 pm Alan Gauld wrote:
"Steven D'Aprano"<st...@pearwood.info> wrote
the purpose). No matter how fast you can perform a loop, it's
always faster to avoid it altogether, so this:
seq = xrange(10000000)
result = []
for i in seq:
if i>= 10: break
result.append(i%2)
will be much faster than this:
seq = xrange(10000000)
result = [i%2 for i in seq if i< 10]
Although it should be pointed out that these are doing very different
things.
Well yes, but I pointed out that you *can* bail out early of for-loops,
but not list comprehensions. The whole point is with a list comp,
you're forced to iterate over the entire sequence, even if you know
that you're done and would like to exit.
Take a look at itertools.takewhile!
result = [i%2 for i in itertools.takewhile(lamda x:i< 10, seq)]
--
Bob Gailer
919-636-4239
Chapel Hill NC
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor