On 30/10/13 17:08, Peter O'Doherty wrote:
Hi List,

I know a geometric sequence can be produced by:

series = [2**x for x in range(7)]

But I would like to curtail the sequence before the last element excedes
a certain value.

You can add an if clause to the comprehension:

series = [2**x for x in range(7) if 2**x <= 60]

But that does mean you calculate the element twice and keep looping beyond the 'break' point.

Is there a better way of doing it that the following:

for x in range(20):
     series_element = 2**x
     print series_element
     if series_element > 60:
         break

If you were stopping in the middle of a long series or if the calculation were more complex then the for loop might be faster
than the comprehension. But such things are best measured
once you have established that there is actually a problem
to solve.

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to