iterating over two arrays in parallel?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • mh@pixar.com

    iterating over two arrays in parallel?

    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

    #2
    Re: iterating over two arrays in parallel?

    >>>>"mark" == mh <mh@pixar.comwr ites:

    markI 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

    markwhere 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

    Comment

    • Luis Zarrabeitia

      #3
      Re: iterating over two arrays in parallel?


      Quoting mh@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 overthe
      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


      Comment

      • Terry Reedy

        #4
        Re: iterating over two arrays in parallel?



        mh@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

        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

        Comment

        • Cousin Stanley

          #5
          Re: iterating over two arrays in parallel?

          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

          Comment

          Working...