Перечислять два списка python одновременно?
Как перечислить два списка одинаковой длины одновременно?
Я уверен, что должен быть более питонический способ сделать следующее:
for index, value1 in enumerate(data1):
print index, value1 + data2[index]
Я хочу использовать индекс и data1 [index] и data2 [index] внутри цикла for.
Ответы
Ответ 1
Используйте zip
:
for index, (value1, value2) in enumerate(zip(data1, data2)):
print index, value1 + value2
Обратите внимание, что zip
работает только до более короткого из двух списков (не проблема для списков одинаковой длины), но в случае неравных списков длины, если вы хотите пройти весь список, используйте itertools.izip_longest
.
Ответ 2
for i, (x, y) in enumerate(zip(data1, data2)):
В Python 2.x вы можете использовать itertools.izip
вместо zip
, esp. для очень длинных списков.
Ответ 3
from itertools import count
for index, value1, value2 in zip(count(), data1, data2):
print(index, value1, value2)
Источник: http://www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-zip-to/#c2603
Ответ 4
Поскольку было упомянуто, что длина равна,
for l in range(0, len(a)):
print a[l], b[l]
Ответ 5
Предположим, вы хотите использовать zip
:
>>> for x in zip([1,2], [3,4]):
... print x
...
(1, 3)
(2, 4)
Ответ 6
Хотя это не очень понятно, что вы ищете,
>>> data1 = [3,4,5,7]
>>> data2 = [4,6,8,9]
>>> for index, value in enumerate(zip(data1, data2)):
print index, value[0]+value[1]
0 7
1 10
2 13
3 16