Is there a better way to iterate over two lists, getting one element from each list for each iteration?

chongman picture chongman · Dec 17, 2009 · Viewed 159k times · Source

I have a list of Latitudes and one of Longitudes and need to iterate over the latitude and longitude pairs.

Is it better to:

  • A. Assume that the lists are of equal lengths:

    for i in range(len(Latitudes)):
        Lat,Long=(Latitudes[i],Longitudes[i])
    
  • B. Or:

    for Lat,Long in [(x,y) for x in Latitudes for y in Longitudes]:
    

(Note that B is incorrect. This gives me all the pairs, equivalent to itertools.product())

Any thoughts on the relative merits of each, or which is more pythonic?

Answer

Roberto Bonvallet picture Roberto Bonvallet · Dec 17, 2009

This is as pythonic as you can get:

for lat, long in zip(Latitudes, Longitudes):
    print(lat, long)