2012-04-09 2 views
32

같은 길이의 목록이 두 개 이상 있다고 가정 해 봅시다. 그들을 반복하는 좋은 방법은 무엇입니까?한 번에 두 개 이상의 목록을 반복하는 더 나은 방법

a, b이 목록입니다.

for i, ele in enumerate(a): 
    print ele, b[i] 

또는

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

또는 내가 놓친 거지 어떤 변형이

?

다른 것을 사용하면 특별한 이점이 있습니까?

답변

76

일반적인 방법은 zip()를 사용하는 것입니다 : 두 개의 반복 가능 객체 ab의 짧은이 소진 될 때 중지됩니다

for x, y in zip(a, b): 
    # x is from a, y is from b 

. 또한 유의할 점은 itertools.izip() (Python 2에만 해당) 및 itertools.izip_longest() (Python 3에서는 itertools.zip_longest())입니다.

+4

이 날 때려. 파이썬 3의'zip' *은 *'izip'이라는 것을 주목할 가치가 있습니다. 또한'zip_longest'도 없지만'map (None, a, b)'할 수 있습니다. – ephemient

+2

@ephemient : 후자는 파이썬 2에서만 가능합니다. 파이썬 3에서는 가장 짧은 순서로 멈추게됩니다. 그리고'izip_longest()'는 파이썬 3에서'zip_longest()'라고 불립니다. –

7

당신은 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 
관련 문제