코르시카 2021. 3. 14. 17:26

참조 :

https://excelsior-cjh.tistory.com/100

 

내장함수 zip() 과 itertools.zip_longest() 함수

Python - Built in Function : zip(*iterables) Python에는 다양한 내장함수(Built-in Function)를 제공한다. 그 중에서 알아두면 유용한 내장함수인 zip()  함수를 알아보도록 하자. 1. zip(*iterables)  함수..

excelsior-cjh.tistory.com


■ zip

1) 정의 :

동일한 개수로 이루어진 자료형으로 묶어주는 역할을 하는 함수

zip(*iterables) # 내장함수

2) 예시 :

d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange':2}
 
min_item = min(zip(d.values(), d.keys()))
max_item = max(zip(d.values(), d.keys()))
print(min_item)
print(max_item)

>>> (1, 'pear')
>>> (4, 'apple')


# min / max 정의 사용
d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange':2}
 
min_item = min(d, key=lambda x : d[x])
max_item = max(d, key=lambda x : d[x])
print(min_item)
print(max_item)

>>> pear
>>> apple

 

 

■ zip + enumerate

1) 정의 :

zip, enumeration 둘다 객체인데, 해당하는 원소를 for 뒤에 배치해서 사용

 

2) 예시 :

a = ['I', 'love', 'BTS']
b = ['Jungkook', 'Jimin', 'Sugar']
for i, (a,b) in enumerate(zip(a,b)):
  print(i, a,b)

>>> 0 I Jungkook
>>> 1 love Jimin
>>> 2 BTS Sugar

 

 

■ zip 과 iterable 간의 개수

- Tip

Zip return은 zip class이므로, 평소 사용하는 객체 취급하려면 list( )로 타입 변환 해주어야 함
→  list(<zipped iterable>)

li1 = [1,2,3]
li2 = ['a','b','c']

zipped = zip(li1, li2)
print(type(zipped))
print(zipped)

>>> <class 'zip'>
>>> <zip object at 0x7f5b8e16bb40>

1) iterable(ex : list) 수가 같을 필요는 없다

list_1 = [1,2,3,4]
list_2 = [5,6,7,8,9]

print(list(zip(list_1, list_2)))

>>> [(1, 5), (2, 6), (3, 7), (4, 8)] 

2) multiple iterable 간의 zipping 도 가능

list_1 = [1,2,3,4]
list_2 = [5,6,7,8,9]
list_3 = ['a','b','c','d','e']

print(list(zip(list_1, list_2, list_3)))

>>> [(1, 5, 'a'), (2, 6, 'b'), (3, 7, 'c'), (4, 8, 'd')]
반응형