본문 바로가기
Programming Language/Python

[Python] 파이썬 zip()과 unzip() 활용법, * 연산자

by 뒹굴거리는프로도 2024. 3. 2.
반응형

 


 

만약 여러 개의 리스트(list)나 튜플(tuple)  등 시퀀스값을 하나로 묶고 싶다면 어떻게 하면 될까요?

이때 python zip 함수를 사용하면 됩니다. 

zip 함수는 동일한 인덱스를 가진 요소들을 묶어 튜플(tuple) 형태의 시퀀스를 만들어 준답니다.

 

예시를 함께 볼까요?

type_1 = [1, 2, 3]
type_2 = ['a', 'b', 'c']
zipped = zip(type_1, type_2)

for x in zipped:
    print(x)
    
#(1, 'a')
#(2, 'b')
#(3, 'c')

두 리스트(list)를 zip 함수의 인자로 넣으니 튜플(tuple)이 생성된 것이 보이시죠?

 

만약 zip으로 묶인 요소들을 복원하고 싶다면 어떻게 하면 될까요? 

* 연산자 붙인 인자를 zip 함수에 전달하면 됩니다. * 연산자를 붙인 시퀀스를 전달한다는 것은, 함수에 인자를 전달할 때 리스트(list), 튜플(tuple)과 같은 시퀀스 요소들을 풀어서 전달하는 것과 같습니다.

예를 들어 zipped = [(1, 'a'), (2, 'b'), (3, 'c')] 가 있다고 합시다. *zipped라고 변수명 앞에 * 연산자를 붙인 뒤 zip 함수에 전달하면 마치 (1, 'a'), (2, 'b'), (3, 'c') 각 개별 인자를 전달하는 것과 같습니다. 

zip 함수는 전달받은 튜플(tuple)들의 각 위치의 요소를 묶어 새로운 시퀀스를 만드는 것이죠.

zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
type_1, type_2 = zip(*zipped)

print(type_1)  # (1, 2, 3)
print(type_2)  # ('a', 'b', 'c')

 

zip은 리스트(list)를 분석하는 파이썬 알고리즘 작성에도 자주 사용되니 확인해 두시면 좋겠습니다.

 


 

반응형