✳️ zip(iterables, strict=False)
- iterable한 객체들을 인자로 받는다.
- 각 객체가 담고 있는 원소를 튜플의 형태로 차례대로 접근할 수 있는 반복자를 반환
🔹 기본 활용법
numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for pair in zip(numbers, letters):
print(pair)
# (1, 'A')
# (2, 'B')
# (3, 'C')
number 리스트와 letter 리스트를 zip 함수에 인자로 넘겨져서 호출되고 for문을 통해 루프를 돌면서 튜플 형태로 차례대로 반환 된다. 양측의 데이터를 하나씩 매칭시켜 준다.
🔹병렬 처리
for number, upper, lower in zip("12345", "ABCDE", "abcde"):
print(number, upper, lower)
# 1 A a
# 2 B b
# 3 C c
# 4 D d
# 5 E e
여러 그룹의 데이터를 한 번만 루프를 돌려서 처리가 가능하다.
예시처럼 3개의 문자열 내의 글자를 하나씩 병렬 처리를 해서 출력을 하는 방식으로 작동이 가능하다.
🔹unzip
zip()으로 묶어 놓은 데이터를 다시 unzip해서 해체하고 싶을 때도 zip 을 이용한다.
먼저 zip으로 엮은 데이터가 아래와 같다고 예시를 들어보자.
numbers = (1, 2, 3)
letters = ("A", "B", "C")
pairs = list(zip(numbers, letters))
print(pairs)
# [(1, 'A'), (2, 'B'), (3, 'C')]
생성된 리스트 앞에 unpacking 연산자를 붙여서 다시 zip () 함수에 넘기면 원래대로 돌아간다.
unpacking 연산자란? ' * '를 붙이면 된다.
numbers, letters = zip(*pairs)
numbers
# (1, 2, 3)
letters
# ('A', 'B', 'C')
🔹 딕셔너리 활용
keys = [1, 2, 3]
values = ["바나나", "체리", "복숭아"]
dict(zip(keys, values))
# {1: '바나나', 2: '체리', 3: '복숭아'}
딕셔너리에서도 유용하게 활용할 수 있다.
⚠️ 주의사항
zip 함수는 넘기는 인자의 길이가 서로 다를 때 주의!
가장 짧은 인자를 기준으로 데이터가 엮이고 나머지는 버려지기 때문이다! 인자의 길이가 서로 같을 때만 이용하기로..
numbers = ["1", "2", "3"]
letters = ["A"]
list(zip(numbers, letters))
# [('1', 'A')]
<참고>
https://www.daleseo.com/python-zip/
'📒 Today I Learn > 🐍 Python' 카테고리의 다른 글
[Python] strip() (0) | 2024.08.26 |
---|---|
[Python] join 함수 (0) | 2024.08.23 |
[Pandas] map, apply, applymap - (2.2.2 version) (0) | 2024.07.18 |
[Pandas] .agg( ) (0) | 2024.07.17 |
[Pandas] .isin( ) (0) | 2024.07.17 |