On Sun, 28 Mar 2010 09:33:23 am yd wrote: > I find it easy to do all this stuff with list comprehensions, but > i am a beginner so this might not be the most efficient way to do it > > numbers=[] > for x in range(1,101): > numbers.append(x)
That certainly isn't efficient! In Python 2.x, this is what it does: (1) Create an empty list and call it "numbers". (2) Create a list [1, 2, ... 100] (3) Set up a for-loop. (4) Read the first number from the list (1) and call it x. (5) Add x to the end of numbers. (6) Read the second number from the list (2) and call it x. (7) Add x to the end of numbers. (8) Read the third number from the list and call it x. (9) Add x to the end of numbers. ... (202) Read the 100th number from the list and call it x. (203) Add x to the end of numbers. (204) Finish up the for-loop. Better to just say: (1) Create a list [1, 2, ... 100] and call it "numbers". numbers = range(1, 101) In Python 3.x, it is exactly the same except for step 2, which creates a lazy range-object which only stores one item at a time. So the solution in Python 3.x is to convert it into a list: numbers = list(range(1, 101)) > > #A way to display all odd numbers > > odd = numbers[::2] > > instead i do this: > odd=[] > for y in range(1,101,2): > odd.append(y) This does just as much unnecessary work as above. -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor