Python | 유용한 Zip 함수

소리·2023년 12월 5일
0

zip 함수

: 여러 개의 iterable 객체를 인자로 받아 각 객체가 담은 원소를 튜플 형태로 접근할 수 있도록 반복자(iterator)를 반환한다.

list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]

pairs = [pairs for pair in zip(list1, list2)]
pairs
>>> [('a', 1), ('b', 2), ('c', 3)]

dict(pairs)
>>> {'a' : 1, 'b' : 2, 'c' : 3}

#unpacking 인자를 이용한 역변환
a, b = zip(*pairs)
  • zip 함수를 사용하지 않고 같은 결과값 반환하는 코드
numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for i in range(3):
     pair = (numbers[i], letters[i])
     print(pair)

[output]

(1, 'A')
(2, 'B')
(3, 'C')

출처

  • zip 풀기 : unzip 함수

특징과 사용방법

  • 병렬처리 로 한 번에 하기
for number, upper, lower in zip("12345", "ABCDE", "abcde"):
     print(number, upper, lower)

[output]
1 A a
2 B b
3 C c
4 D d
5 E e
  • 쉽게 사전을 만들 수 있다.
keys = [1, 2, 3]
values = ["A", "B", "C"]
dict(zip(keys, values))

[output]
{1: 'A', 2: 'B', 3: 'C'}
dict(zip(["year", "month", "date"], [2001, 1, 31]))

[output]
{'year': 2001, 'month': 1, 'date': 31}
  • 길이가 다를 경우 가장 짧은 인자를 기준으로 데이터를 가공하고, 그 외는 버린다.
numbers = ["1", "2", "3"]
letters = ["A"]
list(zip(numbers, letters))

[output]
[('1', 'A')]

❗ 아직 체화가 안되서 막상 코드 찍을 때 생각나지 않지만, 잘 활용하면 편리할 것 같다.

profile
데이터로 경로를 탐색합니다.

0개의 댓글