본문 바로가기
Tech-Pyhton

[Python] Map, Filter, Zip

by redcrow 2019. 3. 27.

1. map, filter


1) map


list와 같은 iterable 객체의 모든 element에 함수를 적용한 후 return 한다


map(function, iterable, ...)


>>> list1 = [1,2,3,4,5,6]

>>> list (map( lambda x : x//2 if x > 3 else x%2 , list1))

[1, 0, 1, 2, 2, 3]


다음은 여러개의 입력을 받아서 int형으로 변환하는 예제


a, b = map(int, input().strip().split(' '))

print(str(a//b) , str(a%b))


2) filter


list와 같은 iterable 객체의 모든 element에 함수를 적용한 후 True에 해당하는 element를 포함한 iterable을 return 한다


filter(function, iterable)


>>> list1 = [1,2,3,4,5,6]


>>> list(filter(lambda x :  x < 4 , list1))

[1, 2, 3]


>>> list( x for x in list1 if x < 4)    #위의 map과 동일한 기능을 하는 list comprehension.
                                                   # 다만 조건이 복잡해지면 함수를 통해 map을 사용하는 것이 유리

[1, 2, 3]



2. Zip 함수


1) zip 이란?


zip(*iterables)


여러개의 iterabled의 element를 하나씩 매핑하여 각각의 tuple로 합쳐준다


>>> name = ['kim','lee','park']

    

>>> score = [90,80,75,85]

    

>>> list(zip(name,score))

    

[('kim', 90), ('lee', 80), ('park', 75)]


2) unpack


* operator는 하나의 튜플을 각각의 element로 분리해준다. unpack이라고 한다.


def sum(a, b):

    return a + b


input = (1, 2)


print(sum(*input))    # sum(1, 2) 와 동일한 의미


list 도 각각으로 분리한다


>>> mylist = [1,2,3]

  

>>> print(mylist)

  

[1, 2, 3]

>>> print(*mylist)

  

1 2 3

>>> print(*mylist,sep='')

  

123


>>> print(''.join(map(str,mylist)))  #위와 동일한 의미

  

123



** 로도 사용가능하다


def minus(a, b):

    return a - b


input { 'b': 2, 'a': 1 }


print(minus(**input ))    # minus(1, 2) 와 동일한 의미


3) 2차원 행렬 뒤집기 [출처 : programmers.co.kr : https://programmers.co.kr/learn/courses/4008/lessons/13318]


아래와 같은 2차원배열의 행과 열을 바꾸는것을 zip과 unpack operator로 구현할 수 있다.


1 2 3            1 4 7  

4 5 6      =>   2 5 8

7 8 9            3 6 9


>>> mylist = [ [1,2,3], [4,5,6], [7,8,9] ]

    

>>> list(map(list, zip(*mylist)))

    

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]


4) 응용 : list 2개를 합치기


>>> a = [0, 1, 2, 3, 4]

>>> b = [0, 1, 2, 3, 4]

>>> list(x + y for x, y in zip(a,b))

[0, 2, 4, 6, 8]



'Tech-Pyhton' 카테고리의 다른 글

Numpy 설치하기  (1) 2019.12.25
[Python] Dictionary  (0) 2019.03.27
[Python] List Comprehension  (0) 2019.03.27
[Python] collections  (0) 2019.03.27
[Python] 유용한 파이썬 기능  (0) 2019.03.10

댓글