2016-02-12 3 views
-1

Я хотел бы перебрать более двух списков одновременно. Я нашел googled и нашел, что можно использовать zip, map. Но они принимают только два списка. Я хотел перебрать 5 списков.Цитирование через несколько списков - Python

Любая помощь была бы действительно оценена.

+2

Где вы взяли, что 'zip' принимает только два списка? 'А = [1,2,3]; (zip (a, a, a, a, a)) 'дает' [(1, 1, 1, 1, 1), (2, 2, 2, 2, 2), (3, 3, 3, 3, 3)] ' –

+0

Но я попытался в цикле' for (item, name, address) в zip (gpxd_wpt_coordinates, gpxd_wpt_names, addressListAll): 'здесь gpxd_wpt_coordinates, gpxd_wpt_names и addressListAll - это списки. Я получаю вывод для элемента и имени. Но я получаю сообщение об ошибке «addredd не определен» – user8162

+0

Я предполагаю, что 'addredd' - это опечатка? В любом случае, похоже, что он должен работать нормально. См. Ниже ответ Джей, который в основном делает то, что вы пытаетесь сделать. –

ответ

2

То, что сказал Иоахим Исакссон, является правильным.

Было бы полезно, если вы можете предоставить фрагмент кода, но вы можете использовать что-то вроде этого:

import itertools 
for a, b, c in itertools.izip (list1, list2, list3): 
    ... 
0

Проверить на signature for zip. Он принимает любое количество итерируемыми:

почтовый индекс (* итерируемыми)

Там нет никаких проблем zip ИНГ несколько списков:

a, b, c = [1,2,3],[4,5,6],[7,8,9] 

for (i,j,k) in zip(a,b,c): 
    print(i,j,k) 

печатает:

1 4 7 
2 5 8 
3 6 9 

You может даже zip 0 или 1 iterables!

list(zip())   # [] 
list(zip([1,2,3])) # [(1,), (2,), (3,)] 
1

zip можно использовать сколь угодно много списков. Я просто сделал это, и он отлично работает.

l1 = [1, 2, 3, 4] 
l2 = [10, 20, 30, 40] 
l3 = [100, 200, 300, 400] 
l4 = [1000, 2000, 3000, 4000] 


for x1, x2, x3, x4 in zip(l1, l2, l3, l4): 
    print(x1, x2, x3, x4) 

Выходы:

1 10 100 1000 
2 20 200 2000 
3 30 300 3000 
4 40 400 4000