본문 바로가기
파이썬/자주하는 질문

파이썬(Python) 두 개의 리스트를 동시에 순회하기

by J-Build 2020. 9. 13.

두 개의 리스트를 동시에 순회(iteration)하는 방법은 zip() 을 통해서 가능합니다. 튜플(tuple)이나 딕셔너리(dictionary)등의 iterable이면 무엇이든 zip()으로 사용할 수 있습니다.

one = [1, 2, 3]
two = [4, 5, 6]

for i, j in zip(one, two):
    print(i, j)

# 1 4
# 2 5
# 3 6

 

만약 리스트의 크기가 다르다면 갯수가 적은 리스트만큼만 순회(iteration)를 하게 됩니다. 

one = [1, 2]
two = [4, 5, 6, 7]

for i, j in zip(one, two):
    print(i, j)

# 1 4
# 2 5

 

zip() 안에 들어가는 인자를 섞어서 사용할 수 도 있습니다. 아래 예제에선 리스트와 튜플을 섞어서 사용하였습니다. 

one = [1, 2, 3]
two = (4, 5, 6)

for i, j in zip(one, two):
    print(i, j)

# 1 4
# 2 5
# 3 6

 

물론 딕셔너리와 같이 사용할 수 도 있습니다.

one = [1, 2, 3]
two = {'d':4, 'e':5, 'f':6}

for i, j in zip(one, two):
    print(i, j)

# 1 d
# 2 e
# 3 f

 

위에서 확인 했듯이, 딕셔너리를 순회 zip()에서 사용하면 키(key) 만 순회가 됩니다. 

one = {'a':1, 'b':2, 'c':3}
two = {'d':4, 'e':5, 'f':6}

for i, j in zip(one, two):
    print(i, j)

# a d
# b e
# c f

 

만약 값을 순회하고 싶다면 아래와 같이 values() 함수를 사용해서 값(value)들을 리스트로 가져와서 zip()에 넣어주어야 합니다. 

one = {'a':1, 'b':2, 'c':3}
two = {'d':4, 'e':5, 'f':6}

for i, j in zip(one.values(), two.values()):
    print(i, j)
    
# 1 4
# 2 5
# 3 6    

 

 

댓글