본문 바로가기
Study (Data Science)/Python

참고) map + lambda

by 콜라찡 2022. 11. 29.

lambda (원래모습 : 바뀐모습)

  • print( (lambda x,y: x + y)(10, 20) )
  • 인자까지 한꺼번에 줄 수있음

 

map (def명, 넣을것)

순회가능한 데이터를 저 함수에 넣어 ouput을 도출하겠다. 는 뜻.

map(변환 함수, 순회 가능한 데이터)
  • map은 꼭 list로 변환해줘야 값을 볼 수 있음.
def list_mul(x):
     return x * 2
result = list(map(list_mul, [1, 2, 3]))
print(result)

lambda + map

  • map이 lambda 식 자체를 인수로 가짐.
  • i 를 i*2로 바꿀꺼고 (lambda), [1,2,3]을 i로 돌릴꺼야 (map)
result = list(map(lambda i: i * 2 , [1, 2, 3]))
print(result)
>>> a = [1, 2, 3, 4, 5]
>>> b = [2, 4, 6, 8, 10]
>>> list(map(lambda x, y: x * y, a, b))
[2, 8, 18, 32, 50]

 

filter(함수, 반복가능한객체)

반복가능한 객체에서 특정 조건에 맞는 요소만 가져옴.

값이 있으면 일단 true라서 다 반환하는 점 조심.

>>> a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
>>> list(filter(lambda x: x > 5 and x < 10, a))
[8, 7, 9]

reduce(함수명, 반복가능한객체)

반복가능한 객체의 각 요소를 지정된 함수로 처리한 뒤, 이전 결과와 누적해서 반환하는 함수.

from functools import reduce

python 3부터 없어짐. 되도록이면 for, while 쓸 것

>>> def f(x, y):
...     return x + y
...
>>> a = [1, 2, 3, 4, 5]
>>> from functools import reduce
>>> reduce(f, a)
15
>>> a = [1, 2, 3, 4, 5]
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, a)
15
>>> a = [1, 2, 3, 4, 5]
>>> x = a[0]
>>> for i in range(len(a) - 1):
...     x = x + a[i + 1]
...
>>> x
15
728x90

댓글