티스토리 뷰

반응형

 

zip( )

 

- 순서 -

1. zip 함수 설명

2. 여러가지 사용 예시 

 


1. zip 함수 설명

 

여러 개의 iterable자료형이 개수가 동일할 때 사용한다. iterable 자료형의 각각의 요소를 나눈 후 순서대로 묶어서 요소 개수만큼 새로운 iterable 자료형을 생성한다. 여기에서 말하는 interable자료형은 리스트, 튜플 같이 반복 가능한 자료형을 의미한다. 

 

2. 사용 방법

2-1. zip 함수를 사용하기 위한 iterable 자료형을 생성한다.

말로 설명하는 것보다 코드로 보는 게 이해가 빠를 것 같다. 먼저 개수가 같은 3개의 리스트를 생성한다.

# iterable자료형
>>> num = [1, 2, 3]
>>> fruit = ['apple', 'banana', 'orange']
>>> color = ['red', 'yellow', 'orange']

위와 같은 요소 개수가 같은 3개의 리스트가 있는 경우, 왼쪽부터 슬라이스 하듯 각 리스트에서 인덱스 위치 순서가 동일한 요소끼리 나눈 후 묶어주는 것이다. 

 

2-2. zip 함수 사용예시

zip함수로 묶어 출력해보겠다. 이때, zip함수를 이용하면 zip type으로 출력된다. 이럴 때는 dict, list 등의 자료형으로 변환시켜서 출력한다. 

 # zip함수로 묶어줌
>>> zip_list = zip(num, fruit, color)
>>> print(zip_list, type(zip_list))
<zip object at 0x0000020180766048> <class 'zip'>  #zip 타입으로 출력

>>> print(list(zip_list))  # list 타입으로 변환
[(1, 'apple', 'red'), (2, 'banana', 'yellow'), (3, 'orange', 'orange')]

 

위에서 iterable 자료형 세 개를 생성한 것과 출력 값을 붙여서 비교를 편하게 해 보겠다.

# 3개의 리스트
num = [1, 2, 3]
fruit = ['apple', 'banana', 'orange']
color = ['red', 'yellow', 'orange']

# zip함수를 이용한 출력값
[(1, 'apple', 'red'), (2, 'banana', 'yellow'), (3, 'orange', 'orange')]

 

2-3. for문에서 zip함수를 사용한 예시

zip함수를 for문에서 사용해보겠다.

>>> for x, y in zip(range(10), range(10)):  # 두개의 0~9까지 숫자모음
>>>     print(x, y)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9

 range 함수를 이용해서 0~9로 이루어진 두 개의 숫자 데이터를 생성해서 zip함수를 이용해 묶어주었다. for문 안에서 변수는 x, y 두 개를 사용해주어야 한다.

range함수에 대해 설명이 필요하신 분들을 위해 이전 포스팅 링크를 걸어둔다.

파이썬 range( ) 숫자(정수) 리스트 생성 함수

 

2-4. zip함수를 이용한 dict자료형 생성

이 밖에도 여러 형태로 유용하게 사용할 수 있다. zip함수를 이용해서 딕셔너리를 생성할 수도 있다. 

# comprehesion 예시, dict 형식으로 리턴
>>> dict_num = { x:y for x, y in zip(range(10),range(10))}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

comprehension 사용법에 대해서도 설명이 필요하신 분들을 위해 이전 포스팅 링크를 걸어둔다.

간편 표현식 comprehension

 

 

파이 참 문서

def zip(__iter1: Iterable,
          __iter2: Iterable,
          __iter3: Iterable,
          __iter4: Iterable,
          __iter5: Iterable,
          __iter6: Iterable, *iterables: Iterable) -> Iterator [Tuple [Any,...]]
Possible types:
• (__iter1: Iterable [_T1]) -> Iterator [Tuple [_T1]]
• (__iter1: Iterable [_T1], __iter2: Iterable [_T2]) -> Iterator [Tuple [_T1, _T2]]
• (__iter1: Iterable [_T1], __iter2: Iterable [_T2], __iter3: Iterable [_T3]) -> Iterator [Tuple [_T1, _T2, _T3]]
• (__iter1: Iterable [_T1], __iter2: Iterable [_T2], __iter3: Iterable [_T3], __iter4: Iterable [_T4]) -> Iterator [Tuple [_T1, _T2, _T3, _T4]]
• (__iter1: Iterable [_T1], __iter2: Iterable [_T2], __iter3: Iterable [_T3], __iter4: Iterable [_T4], __iter5: Iterable [_T5]) -> Iterator [Tuple [_T1, _T2, _T3, _T4, _T5]]
• (__iter1: Iterable, __iter2: Iterable, __iter3: Iterable, __iter4: Iterable, __iter5: Iterable, __iter6: Iterable, iterables: Tuple [Iterable,...]) -> Iterator [Tuple [Any,...]]
--------------------
zip(*iterables) –> zip object
Return a zip object whose.__next__() method returns a tuple where the i-th element comes from the i-th iterable argument. The.__next__() method continues until the shortest iterable in the argument sequence is exhausted and then it raises StopIteration.

 

반응형
댓글
반응형