Stay Hungry Stay Foolish

알고리즘

[파이썬] zip() 함수

dev스카이 2024. 10. 25. 21:19

zip()

파이썬의 zip() 함수는 여러 이터러블(iterable)(리스트, 튜플 등)을 동시에 순회하면서, 각 이터러블의 동일한 인덱스에 있는 요소들을 튜플로 묶어 반환하는 함수이다. 즉, 여러 시퀀스의 요소들을 하나씩 차례대로 짝지어준다.

 

zip() 기본 구문

zip(iterable1, iterable2, ...)

 

  • 입력 : 여러 개의 이터러블 객체 (예: 리스트, 튜플 등).
  • 출력 : 각 이터러블의 요소들을 묶은 튜플로 이루어진 이터레이터.

 

사용 방법

1️⃣ 리스트 두 개를 묶기

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

zipped = zip(list1, list2)
print(list(zipped))

 

출력 결과

[(1, 'a'), (2, 'b'), (3, 'c')]
  • 리스트 list1과 list2의 각 요소가 튜플로 묶여 반환된다.

 

2️⃣ 여러 이터러블 묶기

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [True, False, True]

zipped = zip(list1, list2, list3)
print(list(zipped))

 

출력 결과

[(1, 'a', True), (2, 'b', False), (3, 'c', True)]
  • 여러 개의 리스트나 튜플도 zip()으로 묶을 수 있다.

 

3️⃣ 길이가 다른 이터러블

list1 = [1, 2]
list2 = ['a', 'b', 'c']

zipped = zip(list1, list2)
print(list(zipped))

 

출력 결과

[(1, 'a'), (2, 'b')]
  • zip() 함수는 가장 짧은 이터러블의 길이에 맞춰 짝을 짓는다.
  • 따라서 길이가 다를 경우, 가장 짧은 이터러블의 길이에 맞춰 나머지 요소들은 버려진다.
  • 위 코드에서 list1의 길이가 더 짧기 때문에, list2의 'c'는 버려진다.

 

4️⃣ zip()으로 딕셔너리 만들기

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']

dictionary = dict(zip(keys, values))
print(dictionary)

 

출력 결과

{'name': 'Alice', 'age': 25, 'city': 'New York'}
  • 키와 값을 리스트나 튜플로 묶어 딕셔너리를 생성할 수 있다.

 

zip()의 역활용 (Unzipping)

zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
list1, list2 = zip(*zipped)
print(list1)  
print(list2)

 

출력 결과

(1, 2, 3)  # list1
('a', 'b', 'c')  #list2
  • zip()으로 묶인 튜플들을 다시 풀어내는 것도 가능하다.
  • * 연산자를 사용하여 언패킹할 수 있다.

 

 

'알고리즘' 카테고리의 다른 글

[파이썬] enumerate() 함수  (0) 2024.10.29
[파이썬] set, 집합 함수  (0) 2024.10.29
[파이썬] 딕셔너리(Dictionary), dict()  (0) 2024.10.25
[파이썬] set() (집합 함수)  (0) 2024.10.24
[파이썬] replace() 메서드  (0) 2024.10.22