파이썬의 내장함수 zip에 대해서 알아보도록 하겠습니다.
zip(요소, 요소)
zip() 함수는 여러개의 Iterable 객체를 인자로 받고, 각 객체가 담고 있는 원소를 튜플(Tuple) 형태로 반환합니다. 반복 접근이 가능한 Iterable 객체를 요소로 받기 때문에 zip 함수로 만든 하나의 Iterable 객체도 반복 접근이 가능합니다.
아래 예시를 보시면 쉽게 이해하실 수 있습니다.
alphabet = ['A', 'B', 'C']
numbers = [1, 2, 3]
# zip 형태로 묶은 데이터 차례대로 출력하기
for pair in zip(numbers, alphabet):
print(pair)
('A',1)
('B',2)
('C',3)
하나는 알파벳을 저장하고 하나는 숫자를 저장하는 두 Iterable 형 리스트 변수를 선언했습니다.
이 두 리스트 변수를 zip 함수를 통해 Tuple 형태로 결합한 후 for문을 통해 하나씩 변수를 출력해 보았습니다.
zip함수를 사용하지 않고 튜플형태 출력하기
# zip함수를 사용하지 않고 zip과 같은 기능을 수행할 때
numbers = [1,2,3]
letters = ['A','B','C']
for i in range(3):
pair = (numbers[i], letters[i])
print(pair)
zip 내장함수를 사용하지 않고, 두 리스트 변수를 for문으로 인덱스 0부터 하나씩 접근하면서 두 리스트 변수를 () 괄호로 묶은 후 (Tuple형태로 변환) pair 변수에 넣고 출력하는 코드입니다.
zip 함수를 통한 다중 병렬처리
zip 내장함수는 여러 Iterable 변수들을 병렬로 처리할 수 있습니다. 이전에는 2 가지 리스트 변수만 처리하였는데요. 아래 코드와 같이 한번에 여러가지 변수들을 병렬로 나타낼 수 있습니다.
# zip 함수는 여러 인자들을 묶어서 병렬 처리를 할 수 있다.
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
zip 함수를 통한 딕셔너리 변수 생성
zip 내장함수를 통해 결합한 두 Iterable 변수를 묶어주고 이를 딕셔너리 변수로 생성할 수 있습니다.
# zip함수로 딕셔너리 만들기
keys = [1,2,3]
values = ["A","B","C"]
dic = dict(zip(keys, values))
print(dic)
{1: 'A', 2: 'B', 3: 'C'}
위과 같이 keys, values 변수를 zip으로 묶어준 다음 이를 dict()함수를 통해 딕셔너리 형태로 변경하면 dic 변수에는 딕셔너리형으로 두 keys, values 변수가 초기화 된 것을 확인하실 수 있습니다.