2013-05-01 2 views
19

Как перечислить два списка одинаковой длины одновременно? Я уверен, что должно быть более вещий способ сделать следующее:Перечислять два списка python одновременно?

for index, value1 in enumerate(data1): 
    print index, value1 + data2[index] 

Я хочу использовать индекс и data1 [индекс] и data2 [индекс] внутри для цикла.

ответ

44

Использование zip:

for index, (value1, value2) in enumerate(zip(data1, data2)): 
    print index, value1 + value2 

Обратите внимание, что zip работает только до более короткого из двух списков (не проблема равных списков длины), но, в случае списков неравной длины, если вы хотите, чтобы пройти весь список затем используйте itertools.izip_longest.

+0

благодаря это разрешено 'zip (data1, data2) .index (val1, val2)' – Chebhou

0

Предположим, что вы хотите использовать zip:

>>> for x in zip([1,2], [3,4]): 
    ...  print x 
    ... 
    (1, 3) 
    (2, 4) 
+2

Индекс необходим внутри lo op тоже. –

8
for i, (x, y) in enumerate(zip(data1, data2)): 

В Python 2.x, вы можете захотеть использовать itertools.izip вместо zip, особ. для очень длинных списков.

+9

Кто-нибудь еще ненавидит, что 'enumerate' длится девять символов? –

+0

@StevenRumbalski: теперь, когда вы упомянули об этом, он мог бы быть назван 'enum', чтобы он соответствовал' len' и 'str'. –

+0

@larsmans за исключением того, что смешали бы людей с 'enum's – jamylak

0

Althought это не очень понятно, что вы ищете,

>>> 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 
1

Поскольку уже было упомянуто, что длина равны,

for l in range(0, len(a)): 
    print a[l], b[l]