본문 바로가기
Python

[Python] 람다식 ( Lambda Expressions )

by ybin.im 2024. 12. 13.

▶ 람다식

# 람다식
변수 = lambda 매개변수 : 표현식

코드가 간결하고, 불필요한 루프문의 작성을 없앨수있다.

 

 

▶ 일반함수와 람다식사용의 차이

람다식은 일반적으로 def 키워드를 사용해서 만드는 함수와 달리,
이름 없이 한줄로 간단히 정의할 수 있다.

 

매개변수의 개수

람다함수에 매개변수를 2개 넣고싶다면,
-> lambda x, y : 표현식

함수 뒤에 인수를 직접 넣을수 있다.

 

 

▶람다와 자주 쓰이는 함수

  ▶ map() 함수

map() 함수 : 여러 데이터를 받아서 각 요소에 함수를 적용시켜줌
받은 값은 리스트화를 해서 데이터를 받아야한다.
리스트화 하지 않고 출력하면, 그 데이터가 저장된 메모리의 위치가 출력된다.

 

 

 

  ▶ filter() 함수

filter() 함수 : 주어진 조건에 해당하는 데이터를 추출해준다.

map과 마찬가지로 list화 해준다.

 

 

▶ 함수와 람다함수 실습

 - 날짜, 지역, 온도, 강수량을 이차원리스트로 받는다.

▼구현되어야하는 기능
 - 도시의 평균기온을 계산하는 기능
 - 도시의 최고 / 최저 기온을 찾는 기능
 - 도시의 강수량 분석 기능
 - 날씨 데이터를 추가하는 기능
 - 전체 데이터를 출력하는 기능

 

 

▼ 코드

날씨데이터 이차원리스트

▲ 평균기온 계산 함수
 - weather_data는 전역변수로 선언해서 굳지 매개변수로 넣지 않아도 되지만,
명시적으로 넣어주었다.

 -  filter()와 lambda를 사용해서 wether_data에 입력받은 city가 있는 리스트만 추출
     ( weather_data[x][1] == city 가 루프를 돌며 맞는 도시의 리스트만 추출 )

 - map()과 lambda를 사용해서 temp에 2번인덱스에 있는 값을 temper로 리스트화

 - 만약 temper가 없다면, 입력받은 city가 없는것이니, cityNone값을 리턴

-  이외의 경우 city와, 기온(temper)의 평균을 리턴
( temper의 합 / temper리스트의 개수)

 

 

▲ 최고 / 최저 기온 찾기함수
- 위와 같이 입력받은 city로 도시의 날씨정보 리스트(temp)와 기온(temper)을 추출

- 만약 temper가 없다면, cityNone, None 리턴
  ( else에서 3개를 리턴해서 갯수 맞추기)
 
 - else에서 citytemper의 최고값(max), 최저값(min)을 리턴한다.

 

 

▲ 강수량 분석 함수
 - filter를 통해 도시의 날씨정보 리스트(temp) 추출

 - map으로 강수량(rain)만 추출

 - 추출한 강수량 중 0 이상인 값만 추출하여 비가 온 날을 필터링한다. (rainy)day)

 - 총 강수량도 sum 함수를 통해서 구하고

 - 구한 3개의 값을 모두 리턴헤준다.

 

 

▲ 날씨 데이터 추가함수
 - 날짜를 date형으로 받는다.

 - 도시와 기온, 강수량까지 입력받고,

 - append함수를 통해서 리스트에 추가한다.

 

 

▲ 전체 데이터 출력함수
 - weather_data에서 for문을 사용해서 리스트 인덱싱을 통해서 값을 출력한다.

 

 

▲ 메인함수
 - 위에서 만든 함수들을 한 곳으로 모아 프로그램을 구현한다.

 - 1번
city와 avg_result를 받는다.
avg_result가 None값이면 정보가 존재하지 않는다고 출력한다.
이외의 경우 도시의 이름과 평균기온 출력

 - 2번
max와 min 중 아무거나, None값이면 정보가 존재하지 않는다고 출력한다.
이외의 경우 도시의 이름과 최고기온, 최저기온 출력

 - 3, 4, 5번
리턴 받은 값 만큼 변수를 지정해주고
경우에 따른 멘트를 출력해준다.

 - 6번
종료조건

 

 

람다식과 함수를 사용해서 코드를 간결하게 작성할 수 있었고,

함수를 사용해서 모듈화하여 가독성이 좋다.