초이준철
물낌표
초이준철
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • Python (6)
    • SQL (37)
    • 경험 (4)
    • Tableau (7)
      • Tableau 기본 (2)
      • Tableau 빅스데이터 22여름 대학생 TWBX (5)
    • 책으로 배우는 공부 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • MYSQL 집계함수
  • 통계책
  • MYSQL CASE문
  • 데이터리안
  • TWBX 과제
  • 데이터 심리학
  • 새빨간 거짓말 통계
  • MYSQL desc
  • mysql 문자열 자르기
  • 데이터 분석 방법
  • mysql 문자열 연결
  • MYSQL group by
  • MYSQL 테이블 구조
  • MYSQL insert
  • mysql set
  • 데벨챌
  • 물낌표
  • TWBX 대학생
  • mysql concat
  • Mysql ifnull

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
초이준철

?!

Python

[Python] 일반함수와 lambda함수 쉽게 알아보기 (feat. map / filter)

2022. 9. 15. 21:52

1) 일반함수와 람다함수의 형식 차이

일반함수
def plus(x, y):
	a = x + y
    return a
    
람다함수 (lambda 매개변수들 : 식)
lambda x, y : x + y
# x = 3, y = 5일때 8을 반환

 

2) map과 filter (lambda함수는 표현식 자체를 사용하기보단, map이나 filter를 함께 사용하기에 꼭 알아두셔야 합니다.)

기본형식: map(함수, 리스트 or 튜플) / map 원리는 리스트 원소를 하나씩 꺼내서 함수에 적용하는 것

예시) 매개변수가 하나일 때

def plus(x):
    return x + 10
list(map(plus, [1, 2, 3, 4, 5, 6]))
결괏값: [10, 20, 30, 40, 50, 60]


list(map(lambda x: x + 10, [1, 2, 3, 4, 5, 6]))
결괏값: [10, 20, 30, 40, 50, 60]

* list를 함께 사용해주는 이유: map의 결과는 map 객체이기 때문에 눈으로 확인할 수 없기 때문입니다.

 

예시) 매개변수가 두 개일 때

첫번째
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]

list(map(lambda x, y : x * y, a, b))
결괏값: [2, 6, 12, 20]

두번째 (위와 결괏값 동일)
list(map(lambda x, y : x * y, [1, 2, 3, 4], [2, 3, 4, 5]))
결괏값: [2, 6, 12, 20]

 

 

기본형식: filter(함수, 리스트 or 튜플) / filter 원리는 리스트 원소를 하나씩 꺼내서 함수에 적용하고 참인 값만 리스트로 반환하는 것

def y(x):
	return x > 5
list(filter(y, [3, 4, 5, 6, 7]))
결괏값: [6, 7]


list(filter(lambda x : x > 5, [3, 4, 5, 6, 7]))
결괏값: [6, 7]

 

3) lambda 함수로 조건부 표현식 활용하기

- lambda x : 식1 if 조건식 else 식2 / 조건식을 만족하면 식1을 반환하고 만족 못하면 식2를 반환 

# x가 1이라면, 문자로 반환하고, 아니면 바로 반환하는 조건식
list(map(lambda x : str(x) if x == 1 else x, [1, 2, 3, 4, 5]))
결괏값: ['1', 2, 3, 4, 5]

* 주의사항 lambda함수에서 조건부 표현식을 할 때 elif는 사용할 수 없어요.

그렇기 때문에 조건을 여러 번 하려면 if - else식을 여러번 입력해야 합니다.

 

ex) 조건식 여러번 입력했을 때

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(map(lambda x: str(x) if x == 1 else float(x) if x == 2 else x + 10, a))
['1', 2.0, 13, 14, 15, 16, 17, 18, 19, 20]

 

저작자표시 (새창열림)
    'Python' 카테고리의 다른 글
    • [Python] continue, break, pass 쉽게 이해하기
    • [Python] Pandas 고유한 값 출력하기 feat. unique(), nunique(), value_counts()
    • [Python] dictionary 기초와 중요 메서드 setdefault(), update(), defaultdict()
    • [Python] 해당 칼럼에서 내가 원하는 문자열 찾아내기 str.contains()
    초이준철
    초이준철
    WNWA

    티스토리툴바