▶ 람다식
# 람다식
변수 = 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가 없는것이니, city와 None값을 리턴
- 이외의 경우 city와, 기온(temper)의 평균을 리턴
( temper의 합 / temper리스트의 개수)
▲ 최고 / 최저 기온 찾기함수
- 위와 같이 입력받은 city로 도시의 날씨정보 리스트(temp)와 기온(temper)을 추출
- 만약 temper가 없다면, city와 None, None 리턴
( else에서 3개를 리턴해서 갯수 맞추기)
- else에서 city와 temper의 최고값(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번
종료조건
람다식과 함수를 사용해서 코드를 간결하게 작성할 수 있었고,
함수를 사용해서 모듈화하여 가독성이 좋다.
'Python' 카테고리의 다른 글
[Python] (recursion)재귀함수 이해해보기, 스택 (0) | 2024.12.11 |
---|---|
[Python] 함수 global키워드, 가변 매개변수(args, kwargs) (2) | 2024.12.09 |
[Python] 함수 def (2) | 2024.12.09 |
[Python] while문 for문(리스트내포, 딕셔너리, 리스트 , 이중for문) (2) | 2024.12.06 |
[Python] if문, elif문, else문, 중첩조건문 (0) | 2024.12.02 |