# iterating over two arrays in parallel?

482 views

### m...@pixar.com

Aug 28, 2008, 9:24:38 PM8/28/08
to
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

### sk...@pobox.com

Aug 28, 2008, 9:39:34 PM8/28/08
to m...@pixar.com, pytho...@python.org
>>>>> "mark" == mh <m...@pixar.com> 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

Aug 28, 2008, 9:41:36 PM8/28/08
to m...@pixar.com, pytho...@python.org

Quoting m...@pixar.com:

> 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

Aug 29, 2008, 2:00:03 AM8/29/08
to pytho...@python.org

m...@pixar.com 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

Aug 29, 2008, 9:47:30 AM8/29/08
to

> 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