Lambda 람다 (파이선 마스터)

안희상·2022년 1월 1일

Unit 32.2 람다 표현식으로 함수 만들기

람다식은 무엇이냐?

def() 함수 와 비교하기 - def(): 이걸 더 간편하게 추리는 함수라 생각하면 된다.

설명: 여기서 {plus_ten이라고 정의한 함수}의 매개변수 x 에다
..............................................................+10을 더해서 더해주는 식

lambda x: x + 10
lambda x = plus_ten(x)
: x + 10 = return x + 10

람다 함수 사용법(구조): (lambda 매개변수들: 식)(인수들)

끝에 (인수들) 은 자체 출력할 때만 사용
하지만! 람다함수는 주로 다른 함수의 인수로 사용되기 때문에 자체 출력하는 경우는 드물지 않을까......

자체 호출은 어떻게 하는 것인가?

lambda(1) --> 틀렸다

(lambda x: x + 10)(10)
여기서 참고할 점은 람다식에다 괄호를 추가한다는 점이다. 그 뒤 괄호 안에 인수(매개변수 x값, 인자, 또는 입력값)를 넣어서 호출

람다식의 특징들:

매우 간단하고 편리하다 !

반환값 부분 (return 해주는 부분)은 변수 없이 식 한줄로 표현해야 된다

람다 표현식 안에서 새 변수를 만들 수 없다

변수가 필요한 코드일 경우 def로 함수 작성해라

(lambda x: y = 10; x + y)(1)

에서 y = 10은 새로운 변수를 만다는 것이기 때문에 안된다!

하지만! 바깥에 있는 변수를 가져와 사용할 수 있다

y = 10 은 lambda 식 바깥에 있고 그것을 가져와 lambda 함수 안에 식에다 대입은 가능합니다

x와 y가 전부 바깥에 있을 수도 있다.

뒤에 설명

lambda 함수는 이름이 없는 함수라 익명함수 라고 한다

  • 무슨 말인 지 뒤 내용을 듣다 보면 이해

32.2 ㅡ 람다 표현식과 map, filter, reduce 함수 활용하기

32.2.1 람다 표현식에 조건부 표현식 사용하기

람다식 + if 문식의 구조:

lambda 매개변수들: 식1 if 조건식 else 식2

lambda x: 식1 if 조건식 else 식2

elif는 사용 불가

짬깐! map 함수란?

파이썬 마스터 유닛 22.6 리스트에 map 사용하기

map 사용법(구조): list(map(함수, 리스트))

끝 리스트 부분에 리스트 뿐 아니라 반복 가능한 모든 객체를 넣을 수 있다.
거기서 모든 요소를 하나씩 빼와서 식에다 대입하고 결과값을 내고 또 다시 돌아가 요소 하나 빼고 다 대입하고 결과값 낼 때까지 반복.

(lambda x: str(x) if x % 3 == 0 else x)

if 조건식 2개 넣기

구조: lambda 매개변수들: 식 1 if 조건식 1 / else 식2 if 조건식2 else 식3

1이면 x를 문자열로 바꿔라 [또는][or!] 2면 소수점으로 바꿔라 / 그게 아니면 x 에다 10을 더해줘라

32.2.2 map에 객체를 여러 개 넣기

--> 한개 이상의 변수를 인수값으로 사용하는 람다식 짜기

식1 먼저! 그다음에 if 조건식 else 식 2

끝에 a는 x들의 출처

if else 사이에 ','를 안 넣는다!

이와 비슷하게 람다함수를 다른 함수의 인수로 사용할 때는 다른 함수의 구조만 알면 이해하기 편하다!

filter 함수 설명

"너 말할 때 필터 좀 해서 말을 해라" 의 필터
상대방 기분 나쁘게 할 수 있는 언어 즉 요소들을 빼서 순환하던지 듣기 좋게 말해라~ 이런 느낌

filter 함수의 구조, 사용법

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

--> filter(식, x의 출처)

반복 가능한 객체에서 특정 조건에 맞는 요소만 가져와서 처리

filter와 람다

filter 함수 구조:

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

reduce 함수 설명

reduce + lambda 사용해보기

reduce() 함수란?

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

functools 모듈에서 import 즉 reduce함수를 꺼내와야 합니다

a = [1,2,3,4,5]
b = [6,7,8,9,10]

간단하게 함수를 만들 때 자주 사용된다는 것이 포인트

0개의 댓글