Velocity Reviews > iterating over two arrays in parallel?

# iterating over two arrays in parallel?

mh@pixar.com
Guest
Posts: n/a

 08-29-2008
I want to interate over two arrays in parallel, something like this:

a=[1,2,3]
b=[4,5,6]

for i,j in a,b:
print i,j

where i,j would be 1,4, 2,5, 3,6 etc.

Is this possible?

Many TIA!
Mark

--
Mark Harrison
Pixar Animation Studios

skip@pobox.com
Guest
Posts: n/a

 08-29-2008
>>>>> "mark" == mh <(E-Mail Removed)> writes:

mark> I want to interate over two arrays in parallel, something like this:
mark> a=[1,2,3]
mark> b=[4,5,6]

mark> for i,j in a,b:
mark> print i,j

mark> where i,j would be 1,4, 2,5, 3,6 etc.

a = [1,2,3]
b = [4,5,6]
for (i,j) in zip(a,b):
print i, j

To avoid recreating the entire list you can substitute itertools.izip for
zip.

Skip

Luis Zarrabeitia
Guest
Posts: n/a

 08-29-2008

Quoting http://www.velocityreviews.com/forums/(E-Mail Removed):

> I want to interate over two arrays in parallel, something like this:
>
> a=[1,2,3]
> b=[4,5,6]
>
> for i,j in a,b:
> print i,j
>
> where i,j would be 1,4, 2,5, 3,6 etc.
>
> Is this possible?

Yeap.

===
for i,j in zip(a,b):
print i,j
===

Or better yet (memory wise at least)

===
from itertools import izip

for i,j in izip(a,b):
print i,j
===

("zip" creates a list with the pairs (i,j), izip returns an iterator over the
pairs "i,j")

> --
> Mark Harrison
> Pixar Animation Studios

Are you really from Pixar? Cool

Cheers,

--
Luis Zarrabeitia
Facultad de Matemática y Computación, UH
http://profesores.matcom.uh.cu/~kyrie

Terry Reedy
Guest
Posts: n/a

 08-29-2008

(E-Mail Removed) wrote:
> I want to interate over two arrays in parallel, something like this:
>
> a=[1,2,3]
> b=[4,5,6]
>
> for i,j in a,b:
> print i,j
>
> where i,j would be 1,4, 2,5, 3,6 etc.
>
> Is this possible?

How to fish for yourself:
search 'Python loop two arrays parallel' and second hit with Google is
http://docs.python.org/tut/node7.html
which has this entry
"To loop over two or more sequences at the same time, the entries can be
paired with the zip() function.

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):

.... print 'What is your %s? It is %s.' % (q, a)
....
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
"

Or go to the Tutorial directly, expand the chapter headings, and notice
that 5. Data Structures has section 5.6 Looping Techniques.

Indeed, I recommend that you read thru at least the first 9 chapters.

tjr

Cousin Stanley
Guest
Posts: n/a

 08-29-2008

> I want to interate over two arrays in parallel,
> something like this:
>
> a=[1,2,3]
> b=[4,5,6]
>
> for i,j in a,b:
> print i,j
>
> where i,j would be 1,4, 2,5, 3,6 etc.
>
> Is this possible?
>
> Many TIA!
> Mark

>>>
>>> list_1 = range( 1 , 4 )
>>> list_2 = range( 4 , 7 )
>>>
>>> list12 = zip( list_1 , list_2 )
>>>
>>> for this in list12 :

.... print ' ' , this
....
(1, 4)
(2, 5)
(3, 6)
>>>
>>> for i , j in list12 :

.... print ' ' , i , j
....
1 4
2 5
3 6

--
Stanley C. Kitching
Human Being
Phoenix, Arizona