본문 바로가기

Language/Python

python 서로 다른 크기의 리스트 합치기(zip_longest)

서로 다른크기의 리스트 합치는 방법

이 글에서 뜻하는 서로다른 크기의 리스트 합치기란,
a = [1,2,3], b = [4,5] 일 때,
c = (1,4), (2,5), (3,)으로 만드는 방법을 뜻한다.

방법

같은 크기의 리스트일 때에는, zip이나 numpy를 사용해서 쉽게 합칠 수 있다.
예) a = [1,2,3], b = [4,5,6]일 때, c = (1,4), (2,5), (3,6)을 zip이나 numpy를 사용해 만들 수 있다.

하지만 다른 크기의 리스트일 때, zip을 사용하게되면,
c = (1,4), (2,5), (3,)으로 만들어지는게 아닌, (3,)은 맞아떨어지는 짝이 없기때문에 무시하게된다(사라진다).
이때! 사용하는게 zip_longest다.

zip_longest에 대한 설명은 따로 필요없고 바로 코드로 보면

import itertools # zip_longest를 사용하기 위해

a = [1,2,3]
b = [4,5]

for x,y in itertools.zip_longest(a,b):
    print(x,y)

위 코드처럼 하면 (3,)이 아닌, (3,None)이 되게된다.
None 부분을 원하는 값으로 설정해줄 수 있는데,

for x,y in itertools.zip_longest(a,b,fillvalue="(원하는 값)")

위 처럼, fillvalue 인자를 넣어주면 된다.

반응형