Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 주식분석
- 알고리즘
- GRU
- 텐서플로
- 하이브
- yarn
- Java
- hive
- recursion
- 코딩더매트릭스
- RNN
- 파이썬
- C
- LSTM
- 하둡2
- effective python
- Sort
- HelloWorld
- C언어
- scrapy
- python
- 선형대수
- graph
- NumPy
- hadoop2
- codingthematrix
- collections
- 딥러닝
- 그래프이론
- tensorflow
Archives
- Today
- Total
EXCELSIOR
내장함수 zip() 과 itertools.zip_longest() 함수 본문
Python - Built in Function : zip(*iterables)
Python에는 다양한 내장함수(Built-in Function)를 제공한다. 그 중에서 알아두면 유용한 내장함수인 zip()
함수를 알아보도록 하자.
1. zip(*iterables)
함수
zip()
함수는 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수이다.(점프투파이썬) 아래의 그림처럼 각 자료형의 i-th 에 해당하는 요소(elements)를 묶어주는 함수이다. 자세한 내용은 docs.python.org에서 확인할 수 있다.
[예제1]의 소스코드를 통해 zip()
에 대해 자세히 알아보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # 예제1 - zip()예제 ## 1) list 형 x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y) print(list(zipped)) ''' 결과 [(1, 4), (2, 5), (3, 6)] ''' z = [7, 8, 9] zipped2 = zip(x, y, z) print(list(zipped2)) ''' 결과 [(1, 4, 7), (2, 5, 8), (3, 6, 9)] ''' ## 2) str 형 a = 'abc' b = 'def' zipped3 = zip(a, b) print(list(zipped3)) ''' 결과 [('a', 'd'), ('b', 'e'), ('c', 'f')] ''' | cs |
2. zip()
활용 예제
zip()
을 이용해서 Dictionary의 {key: value} 중 value 값으로 최대값과 최소값, 그리고 정렬을 하는데 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # 예제2 - zip()을 이용한 Dictionary의 value기준으로 # 최소(min), 최대(max)값 찾기 및 정렬하기 # 1) 최소, 최대값 찾기 d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange':2} min_item = min(zip(d.values(), d.keys())) max_item = max(zip(d.values(), d.keys())) print(min_item) print(max_item) ''' 결과 (1, 'pear') (4, 'apple') ''' # 2) 오름차순으로 정렬하기 d_sorted = sorted(zip(d.values(), d.keys())) print(d_sorted) ''' 결과: [(1, 'pear'), (2, 'orange'), (3, 'banana'), (4, 'apple')] ''' d_sorted2 = sorted(d.items(), key= lambda t:t[1]) print(d_sorted2) ''' 결과: [('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)] ''' | cs |
[예제2-2]에서 zip()
함수를 사용하여 오름차순으로 정렬한 결과와 sorted()
의 key 를 사용하여 정렬한 결과는 튜플의 값의 위치만 다를뿐 오름차순 정렬 결과는 같다.
3. itertools.zip_longest(*iterables, fillvalue=None)
만약, 길이가 다른 경우 (예를들어, x = [1, 2, 3], y = [4, 5, 6, 7]
일때), zip()
을 사용하면 어떻게 될까? 아래의 [예제3]에서 리스트 y의 요소(element)인 7 은 제외되는것을 볼 수 있다.
1 2 3 4 5 6 7 8 9 10 | # 예제3 - 길이가 다른 자료형에 zip() 함수 적용 x = [1, 2, 3] y = [4, 5, 6,7] zipped = zip(x, y) print(list(zipped)) ''' 결과 [(1, 4), (2, 5), (3, 6)] ''' | cs |
이렇게 길이가 다른 경우의 자료형에는 itertools.zip_longest()
를 사용하면 된다. docs.python.org에서 살펴보면 길이가 다른 자료형인 경우 zip_longest(*iterables, fillvalue=None)
의 fillvalue= 인자에 값을 지정하여 zip()
함수를 적용해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 예제4 - itertools.zip_longest를 이용하여 길이가 다른 자료형 zip() 적용 from itertools import zip_longest x = [1, 2, 3] y = [4, 5, 6,7] # 1) zip_longest 적용 zipped = zip_longest(x, y) print(list(zipped)) ''' 결과 [(1, 4), (2, 5), (3, 6), (None, 7)] ''' # 2) fillvalue= 인자에 값을 지정 zipped = zip_longest(x, y, fillvalue=0) print(list(zipped)) ''' 결과 [(1, 4), (2, 5), (3, 6), (0, 7)] ''' | cs |
'Python > 자료구조' 카테고리의 다른 글
collections 모듈 - OrderedDict (0) | 2017.09.07 |
---|---|
collections 모듈 - namedtuple (5) | 2017.08.22 |
collections 모듈 - deque (3) | 2017.08.20 |
collections 모듈 - defaultdict (0) | 2017.08.18 |
collections 모듈 - Counter (7) | 2017.08.17 |
Comments