482 views

Skip to first unread message

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

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

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

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

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

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu