Tiny Finger Point Hand With Heart
본문 바로가기
Python

[Python] zip()

by yoondii 2023. 2. 21.
728x90
반응형

 

zip 함수

zip(*iterables)는 각 iterables 의 요소들을 모으는 이터레이터를 만든다.
튜플의 이터레이터를 돌려주는데, i 번째 튜플은 각 인자로 전달된 시퀀스나 이터러블의 i 번째 요소를 포함한다.

# zip(*iterable) : 동일한 개수로 이루어진 자료형을 묶어 줌

a = ['one', 'two', 'three']
b = ['a', 'b', 'c']
print(list(zip(a, b)))
---------------------------------------------
[('one', 'a'), ('two', 'b'), ('three', 'c')]

a라는 리스트와 b라는 리스트의 값들이 index 순서에 따라서 묶어진 것을 확인할 수 있다.

# 두 리스트의 요소 끄집어내기
# zip 함수 사용한 방법
for val1, val2 in zip(a, b):
    print(val1, val2)

-----------------------------------
one a
two b
three c
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
    print (i)
---------------------------------
(1, 40)
(2, 50)
(3, 60)

반복문에서 특히나 활용하기가 좋다. 반복문을 수행할 때, 두 개의 리스트의 값을 각각 가져와야 할 경우 매우 유용하게 사용할 수 있다.


zip 함수 활용

1. 전치행렬 생성하기

# 전치행렬 생성 (행과 열을 교환)
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = list(zip(*a))

print(b)
----------------------------------------
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

a 리스트의 각 요소인 리스트 들을 zip으로 묶어줄 수 있다. 이를 통해서 transform 한 것과 같은 효과를 확인할 수 있다.

 

2.여러 개의 Iterable 동시에 순회할 때

list1 = [1, 2, 3, 4]
list2 = [100, 120, 30, 300]
list3 = [392, 2, 33, 1]
answer = []
for number1, number2, number3 in zip(list1, list2, list3):
   print(number1 + number2 + number3)
-------------------------------------------------------------
493
124
66
305

 

3. dictionary 만들기

A = ['name', 'age', 'phone', 'gender']
B = ['YoonDii', 27, '010-XXXX-YYYY', 'female']
d = dict(zip(A, B))
print(d)
---------------------------------------------------------------------------
{'name': 'YoonDii', 'age': 27, 'phone': '010-XXXX-YYYY', 'gender': 'female'}

A 리스트의 값을 key 값으로 사용하고 B 리스트의 값을 value 값으로 사용하여 딕셔너리를 생성한다.

animals = ['cat', 'dog', 'lion']
sounds = ['meow', 'woof', 'roar']
answer = dict(zip(animals, sounds)) 
print(answer)
-------------------------------------
{'cat': 'meow', 'dog': 'woof', 'lion': 'roar'}

이런 방식으로 dictionary를 선언해야 할 때, 손쉽게 만들어줄 수 있을 것이다.

enumerate와 마찬가지로 zip함수는 매우 활용도가 높은 내장함수이므로 잘 숙지하고 익히면 좋다.

 

https://docs.python.org/ko/3/library/functions.html#zip

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

 

728x90
반응형

댓글