zip() 기본 문법
>>> numbers = [1, 2, 3]
>>> letters = ["A", "B", "C"]
>>> for pair in zip(numbers, letters):
... print(pair)
...
(1, 'A')
(2, 'B')
(3, 'C')
>>> numbers = [1, 2, 3]
>>> letters = ["A", "B", "C"]
>>> for i in range(3):
... pair = (numbers[i], letters[i])
... print(pair)
...
(1, 'A')
(2, 'B')
(3, 'C')
병렬 처리
zip() 함수를 활용하면 여러 그룹의 데이터를 루프를 한 번만 돌면서 처리할 수 있는데요. 가변 인자를 받기 때문에 2개 이상의 인자를 넘겨서 병렬 처리를 할 수 있습니다.
예를 들어, 아래 코드는 3개의 문자열 내의 글자를 하니씩 병렬해서 출력하고 있습니다.
>>> for number, upper, lower in zip("12345", "ABCDE", "abcde"):
... print(number, upper, lower)
...
1 A a
2 B b
3 C c
4 D d
5 E e
unzip
zip() 함수로 엮어 놓은 데이터를 다시 해체(unzip)하고 싶을 때도 zip() 함수를 사용할 수 있습니다.
먼저 zip() 함수로 2개의 터플의 데이터를 엮은 후 리스트로 변환해보겠습니다.
>>> numbers = (1, 2, 3)
>>> letters = ("A", "B", "C")
>>> pairs = list(zip(numbers, letters))
>>> print(pairs)
[(1, 'A'), (2, 'B'), (3, 'C')]
사전 변환
>>> keys = [1, 2, 3]
>>> values = ["A", "B", "C"]
>>> dict(zip(keys, values))
{1: 'A', 2: 'B', 3: 'C'}
>>> dict(zip(["year", "month", "date"], [2001, 1, 31]))
{'year': 2001, 'month': 1, 'date': 31}
주의 사항
zip() 함수로 넘기는 인자의 길이가 다를 때는 주의를 해야 합니다. 왜냐하면 가장 짧은 인자를 기준으로 데이터가 엮이고, 나머지는 버려지기 때문입니다.
>>> numbers = ["1", "2", "3"]
>>> letters = ["A"]
>>> list(zip(numbers, letters))
[('1', 'A')]
'프로그래밍 > Python' 카테고리의 다른 글
Using Slack Webhook in Python (0) | 2022.08.17 |
---|---|
Using Rotating-Logging in Python (0) | 2022.08.17 |
Zip Extract on Memory (Python) (0) | 2022.08.17 |
FTP Sending From Memory (Python) (0) | 2022.08.17 |
Python 실행 파일 만들기 (0) | 2021.06.29 |