Это настолько питонический, насколько вы можете получить:
for lat, long in zip(Latitudes, Longitudes):
print lat, long
на случай, если ваши списки широты и долготы большие и медленно загружаются:
from itertools import izip
for lat, lon in izip(latitudes, longitudes):
process(lat, lon)
или если вы хотите избегайте цикла for
from itertools import izip, imap
out = imap(process, izip(latitudes, longitudes))
Другой способ сделать это - использовать map
.
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> for i,j in map(None,a,b):
... print i,j
...
1 4
2 5
3 6
Одно отличие в использовании карты по сравнению с zip состоит в том, что с zip длина нового списка составляет
то же, что и длина самого короткого списка.
Например:
>>> a
[1, 2, 3, 9]
>>> b
[4, 5, 6]
>>> for i,j in zip(a,b):
... print i,j
...
1 4
2 5
3 6
Использование карты для тех же данных:
>>> for i,j in map(None,a,b):
... print i,j
...
1 4
2 5
3 6
9 None
Итерация по элементам двух списков одновременно известна как zip-архивирование, а python предоставляет встроенный функция для него, которая описана здесь .
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == list(x2) and y == list(y2)
True
[Пример взят из pydocs]
В вашем случае это будет просто:
for (lat, lon) in zip(latitudes, longitudes):
... process lat and lon
Приятно видеть огромную любовь к zip
] в ответах здесь.
Однако следует отметить, что если вы используете версию python до 3.0, модуль itertools
в стандартной библиотеке содержит функцию izip
, которая возвращает итерируемый объект, что больше уместно в этом случае (особенно если ваш список latt / longs довольно длинный).
В python 3 и более поздних версиях zip
ведет себя как izip
.