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 |