본문 바로가기

Python/Python 이론

[Python] zip 함수 사용 방법

Syntax(구문) :

zip(iterable)

Parameters(매개변수) :

  • iterable : 반복가능한 객체(iterable)가 입력 되어야 함. <1개 이상>
    필수적으로 입력받아야 한다.
  iterable  
Data type(데이터 타입) iterable (반복가능한 객체)
Ex:) list, set, dict, tuple, string
입력 가능한 개수 1개 이상
필수 여부 필수 아님
설명 서로 다른 iterable 들을 하나씩 순서에 맞춰 tuple 에 넣는다.

Return Value(리턴 값):

data type: class 'zip'

해설: iterable에 입력받은 객체들의 각 값들을 순서에 맞춰서 tuple에 넣는 동작을 수행한다. 순서대로 진행되기 때문에 return 값은 zip class 이다.

Example:

<Iterable이 없는 경우>

Iterable이 없는 zip

zip함수의 매개변수인 iterable은 필수로 들어가야 하는 변수가 아니므로 아무것도 넣지 않은 상태에서 실행시켜 봤다.

zip만을 출력한다면 zip 객체를 출력하고.

이를 list로 감싸준다면 비어있는 list를 출력한다.

<Iterable이 1개인 경우>

Iterable이 1개인 경우

Iterable에 dict 자료형의 객체를 넣은 경우다.

zip 함수의 결과로 나온 객체를 list로 묶은 경우, ex_d의 keys() 값들이 각 튜플의 앞에 위치하고 뒤는 값이 비어있다.

<Iterable이 2개인 경우>

Iterable이 2개인 경우

주로 사용하는 경우인, Iterable 2개가 입력된 경우다.

각 l1과 l2 list의 값들을 열에 맞춰 묶고 tuple에 집어넣는다.

따라서 index가 0인 9,3이 하나의 튜플에 묶여 (9,3)이 되고 그 다음 인덱스의 값인 8,4가 (8,4)가 된다.

<Iterable이 3개인 경우>

Iterable이 3개인 경우

이제 2개 다음은 3개다. Iterable 3개가 입력된 경우를 살펴보도록 하겠다.

각 l1, l2, l3에서 index가 0인 값들을 9, 3, 13이다. 이 값들을 순서대로 tuple에 집어넣는다면 (9,3,13)이고 이는 출력값과 동일하다.

이후 Iterable이 3개 이상 입력되는 경우도 다 동일한 방식으로 적용된다.

<Iterable의 길이가 서로 다른 경우>

Iterable의 길이가 서로 다른 경우

여지껏 입력받은 Iterable간의 길이가 같은 경우만을 살펴봤다.

그렇다면 서로 길이가 다른 경우에는 어떤 식으로 작동할까?

보다시피 l1의 뒤쪽 2개의 값이 제외된걸 확인할 수 있다. 이렇듯 zip함수는 입력받은 iterable들 중 가장 짧은 객체를 기준으로 삼고 나머지 값들은 제외한다.

<응용>

자주 사용되는 예1
자주 사용되는 예2

개인적으로 zip함수를 자주 쓰지 않는다.

다만 기존에 가공할 필요가 있는 iterable이 있고 그 객체가 다른 객체와 묶일 필요가 있는 경우, 혹은 인덱스 처리와 tuple 타입을 활용할 필요가 있는 경우에 사용한다.

총평:

활용 빈도(1.8 / 5)

zip 함수는 python에 내장된 기본 함수이다.

많이 쓰이진 않는다.

여러가지 iterable 객체들을 묶을 필요가 있는 경우 사용된다.

 

 

'Python > Python 이론' 카테고리의 다른 글

[Python] Dict자료형 get 함수 사용 방법  (0) 2022.09.27
[Python] map함수 사용 방법  (0) 2022.09.25