Re: A little more advanced for loop
Larry Bates [EMAIL PROTECTED] wrote: Note: if lists are long take a look at itertools izip. zip creates a list of lists which could take lots of memory/time if they are VERY large. itertools izip iterates over them in place. That's interesting. I was going to quibble with the assertion that zip could take lots of time, since on the face of it a loop using izip packs and unpacks just as many tuples. Fortunately I tried it out before claiming that zip would be just as fast :) It would appear that even for short sequences the izip solution is faster. My guess would be it is because the same tuple objects are being reused in the izip version. C:\Python25\Libtimeit.py -s a, b, c = [range(1000)]*3 -s from itertools import izip for p,q,r in izip(a,b,c): pass 1 loops, best of 3: 131 usec per loop C:\Python25\Libtimeit.py -s a, b, c = [range(1000)]*3 for p,q,r in zip(a,b,c): pass 1000 loops, best of 3: 212 usec per loop C:\Python25\Libtimeit.py -s a, b, c = [range(100)]*3 -s from itertools import izip for p,q,r in izip(a,b,c): pass 10 loops, best of 3: 13.9 usec per loop C:\Python25\Libtimeit.py -s a, b, c = [range(100)]*3 for p,q,r in zip(a,b,c): pass 1 loops, best of 3: 22.6 usec per loop C:\Python25\Libtimeit.py -s a, b, c = [range(10)]*3 -s from itertools import izip for p,q,r in izip(a,b,c): pass 10 loops, best of 3: 2.21 usec per loop C:\Python25\Libtimeit.py -s a, b, c = [range(10)]*3 for p,q,r in zip(a,b,c): pass 10 loops, best of 3: 3.52 usec per loop -- http://mail.python.org/mailman/listinfo/python-list
Re: A little more advanced for loop
In article [EMAIL PROTECTED], Larry Bates [EMAIL PROTECTED] wrote: Note: if lists are long take a look at itertools izip. zip creates a list of lists which could take lots of memory/time if they are VERY large. itertools izip iterates over them in place. That's half-true -- while izip is faster, it's not enough faster to make a significant difference unless the lists are huge rather than large. Remember that the data elements themselves are not copied. -- Aahz ([EMAIL PROTECTED]) * http://www.pythoncraft.com/ I disrespectfully agree. --SJM -- http://mail.python.org/mailman/listinfo/python-list
A little more advanced for loop
Hi folks, Suppose I have to loop over 3 lists being the same size at the same time and order. How can I do that without using the range() function or whatever indexing? Example using range: a = ['aaa', ''] b = ['bb', ''] c = ['c', ''] for i in range(len(a)): # using a[i], b[i], and c[i] I'm sure there's a elegant way to do that... Thanks in advance. -- http://mail.python.org/mailman/listinfo/python-list
Re: A little more advanced for loop
Horta wrote: Hi folks, Suppose I have to loop over 3 lists being the same size at the same time and order. How can I do that without using the range() function or whatever indexing? Example using range: a = ['aaa', ''] b = ['bb', ''] c = ['c', ''] for i in range(len(a)): # using a[i], b[i], and c[i] I'm sure there's a elegant way to do that... Use zip: for av, bv, cv in zip(a, b, c): print av, bv, cv Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: A little more advanced for loop
Horta wrote: Hi folks, Suppose I have to loop over 3 lists being the same size at the same time and order. How can I do that without using the range() function or whatever indexing? Example using range: a = ['aaa', ''] b = ['bb', ''] c = ['c', ''] for i in range(len(a)): # using a[i], b[i], and c[i] I'm sure there's a elegant way to do that... Thanks in advance. Sure, there is: for a_item, b_item , c_item in zip(a,b,c): # do something -- http://mail.python.org/mailman/listinfo/python-list
Re: A little more advanced for loop
On Feb 9, 9:00 am, Stephan Diehl [EMAIL PROTECTED] wrote: Horta wrote: Hi folks, Suppose I have to loop over 3 lists being the same size at the same time and order. How can I do that without using the range() function or whatever indexing? Example using range: a = ['aaa', ''] b = ['bb', ''] c = ['c', ''] for i in range(len(a)): # using a[i], b[i], and c[i] I'm sure there's a elegant way to do that... Thanks in advance. Sure, there is: for a_item, b_item , c_item in zip(a,b,c): # do something Thanks guys! -- http://mail.python.org/mailman/listinfo/python-list
Re: A little more advanced for loop
Horta wrote: On Feb 9, 9:00 am, Stephan Diehl [EMAIL PROTECTED] wrote: Horta wrote: Hi folks, Suppose I have to loop over 3 lists being the same size at the same time and order. How can I do that without using the range() function or whatever indexing? Example using range: a = ['aaa', ''] b = ['bb', ''] c = ['c', ''] for i in range(len(a)): # using a[i], b[i], and c[i] I'm sure there's a elegant way to do that... Thanks in advance. Sure, there is: for a_item, b_item , c_item in zip(a,b,c): # do something Thanks guys! Note: if lists are long take a look at itertools izip. zip creates a list of lists which could take lots of memory/time if they are VERY large. itertools izip iterates over them in place. from itertools import izip for a_item, b_item, c_item in izip(a,b,c): # do something -Larry -- http://mail.python.org/mailman/listinfo/python-list