bhaaluu wrote: > Can you explain how this works? How would this be written in > a "conventional" way?
I'm not sure if this is addressed to me but I'll reply anyway. :) >>>> foo = [1,2,3,4,5,6] >>>> [(foo[i],foo[i+1]) for i in range(0,len(foo),2)] range(0,len(foo)) would create a list of consecutive numbers starting from the first argument (0) till (but not including) the last (len(foo)) This will run as range(0,6) and will return [0,1,2,3,4,5] The 2 as the third argument to range specifies the increment (common difference of the arithmetic progression). So if you say range(0,10,2), you'd get [0,2,4,6,8]. If you say range(0,10,3), you'd get [0,3,6,9] etc. Thus the list comprehension is written to iterate over [0,2,4] i is used as the loop variable in the list comprehension and we return tuples consisting of the ith and the i+1th elements of the list. So, it should return [(foo[0],foo[1]), (foo[2],foo[3]), (foo[4],foo[5]) ] Which is the result. Using a for loop, you can write this as res = [] for i in range(0,len(foo),2): res.append( (foo[i],foo[i+1],)) print res I hope I'm clear > Also, what kinds of ways might this be used? I can't off the cuff think of anything. Peace -- ~noufal _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
