파이썬의 기본 함수인 zip과 itertools 모듈의 zip_longest를 비교하겠습니다.
1. zip(*iterables, strict=False)
iterable들의 각 순서에 대응되는 원소를 tuple로 묶어 반복합니다.
strict가 True일때 각 iterable들의 길이가 같지 않으면 ValueError가 발생합니다.
기본적으로는 strict가 False인데, 이때는 iterable들 중 길이가 가장 작은 순서까지만 반복합니다.
l1 = [1, 2, 3]
l2 = 'abcde'
l3 = ['apple', 'orange', 'melon', 'lemon']
for tup in zip(l1, l2, l3):
print(tup)
# 길이가 가장 짧은 l1에 맞춰 반복
# (1, 'a', 'apple')
# (2, 'b', 'orange')
# (3, 'c', 'melon')
2. zip_longest(*iterables, fillvalue=None)
zip_longest는 기본적으로 zip과 같지만, iterable들 중 길이가 가장 긴 iterable을 기준으로 반복합니다.
그 보다 길이가 짧은 iterable들은 fillvalue값으로 채워집니다.
from itertools import zip_longest
l1 = [1, 2, 3]
l2 = 'abcde'
l3 = ['apple', 'orange', 'melon', 'lemon']
for tup in zip_longest(l1, l2, l3, fillvalue='NO'):
print(tup)
# 길이가 가장 긴 l2를 기준으로 반복, 빈 자리는 fillvalue로 채운다
# (1, 'a', 'apple')
# (2, 'b', 'orange')
# (3, 'c', 'melon')
# ('NO', 'd', 'lemon')
# ('NO', 'e', 'NO')
'프로그래밍언어 > 파이썬' 카테고리의 다른 글
[functools] cmp_to_key - old-style comparison function (0) | 2022.07.15 |
---|---|
[functools]함수 결과 캐싱 - cache, cached_property, lru_cache (0) | 2022.07.15 |
[파이썬]itertools - product, permutations, combinations (0) | 2022.07.13 |
[파이썬]itertools - count, cycle, repeat (0) | 2022.07.13 |