Каков наилучший способ перебора нескольких списков одновременно?
Скажем, у меня есть два или более списков одинаковой длины. Какой хороший способ пронести через них?
a
, b
- это списки.
for i, ele in enumerate(a):
print ele, b[i]
или
for i in range(len(a)):
print a[i], b[i]
или есть ли какой-нибудь вариант, который мне не хватает?
Есть ли особые преимущества использования одного над другим?
Ответы
Ответ 1
Обычный способ - использовать zip()
:
for x, y in zip(a, b):
# x is from a, y is from b
Это прекратится, когда короче из двух итераций a
и b
будут исчерпаны. Также стоит отметить: itertools.izip()
(только Python 2) и itertools.izip_longest()
(itertools.zip_longest()
в Python 3).
Ответ 2
Вы можете использовать zip
:
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a, b):
... print x, y
...
1 a
2 b
3 c