zip 이란
- zip은 Python의 내장 함수로,
여러 개의 iterable의 요소(예: 리스트, 튜플 등)들이 짝을 이루어 튜플로 묶이게 됩니다.
- zip은 다양한 상황에서 여러 데이터 리스트를 병렬로 처리할 때 유용합니다.
zip 함수의 예시
입력:
- 여러 개의 iterable을 인수로 받습니다.
출력:
- 각 iterable의 동일한 인덱스에 위치한 요소들이 짝을 이루는 튜플을 반환하는 iterator를 생성합니다.
- 이 iterator는 가장 짧은 iterable의 길이에 맞춰집니다.
예시 코드
# 두 개의 리스트를 zip 함수로 묶기
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped))
# 출력: [(1, 'a'), (2, 'b'), (3, 'c')]
다른 예시
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [100, 200, 300]
zipped = zip(list1, list2, list3)
print(list(zipped))
# 출력: [(1, 'a', 100), (2, 'b', 200), (3, 'c', 300)]
여기서는 세 개의 리스트가 zip에 전달되며, 각 리스트의 동일한 인덱스 요소들이 튜플로 묶입니다.
zip 함수의 주의점
길이 차이:
- 입력된 iterable들의 길이가 다를 경우,
가장 짧은 iterable의 길이에 맞춰 나머지 요소들은 무시됩니다.
list1 = [1, 2]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped))
# 출력: [(1, 'a'), (2, 'b')]
list2에 'c'가 있지만, list1이 더 짧기 때문에 'c'는 결과에 포함되지 않습니다.
zip의 응용
사전 만들기:
- 두 개의 리스트를 키와 값으로 묶어서 사전을 쉽게 만들 수 있습니다.
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
my_dict = dict(zip(keys, values))
print(my_dict)
# 출력: {'name': 'Alice', 'age': 25, 'city': 'New York'}
병렬 반복 처리:
- 여러 리스트의 요소를 병렬로 처리할 때 사용할 수 있습니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for a, b in zip(list1, list2):
print(a + b)
# 출력: 5, 7, 9
zip_longest
더 긴 list 기준으로 iterate를 실행하려면 Python 내장 모듈 itertools의 zip_longest()를 사용합니다.
from itertools import zip_longest
word1 = ['a', 'b', 'c', 'd']
word2 = ['x', 'y']
for i, j in zip_longest(word1, word2):
print(i, j)
>>>
a x
b y
c None
d None
디폴트 채우기 적용
for i, j in zip_longest(word1, word2, fillvalue='-'):
print(i, j)
>>>
a x
b y
c -
d -
'Programming > Python' 카테고리의 다른 글
Python - AWS Athena 쿼리실행방법 PyAthena vs Boto3 (0) | 2024.09.03 |
---|---|
Python - Transpose(전치) 예제 (0) | 2024.08.25 |
Python - Product vs Permutations vs Combinations (0) | 2024.08.18 |
Python - Numpy란 [1] (0) | 2023.11.18 |
Python - 클로저와 __call__ 함수 (0) | 2023.06.18 |