[파이썬] 람다식 쓰는법

2022. 1. 19. 09:15·Python/파이썬 함수

 

1. 람다식에 대한 기본적인 이해


람다식을 통해 익명함수를 만드는 법에 대해서 알아보자.

람다식은 함수 표현을 간단하게 만들어줄 수 있다. 한 줄 짜리 함수에 많이 사용되는 편이다.

 

일단 일반 함수와 비교하기 위해 예시를 들도록 하겠다.

def square(x):
	return x * x
    
print(square(4))
>> 16

정사각형의 넓이를 구하는 square다. 이를 아래와 같은 람다식으로 표현할 수 있다.

print((lambda x : x*x)(4))
>> 16

람다식을 재할당하고 싶으면 따로 저장할 수도 있다.

square = (lambda x : x*x)
print(square(4))
>> 16

 

 

또한, 한 줄(one-line) 조건문을 사용하여 람다식을 표현하는 것도 가능하다.

아래의 예시를 확인해보자.

print((lambda x : x*x if x < 5 else x*x*2)(4))
>> 16
print((lambda x : x*x if x < 5 else x*x*2)(6))
>> 72
  • 위의 출력은 x가 5보다 작았기 때문에 4 * 4 = 16이 나온다.
  • 아래는 5보다 큰 6이기때문에 6 * 6 * 2 = 72가 나오는 것이다.

 

 

 

2. map과 함께 쓰이는 람다


아마 알고리즘 문제를 꽤 풀어봤다면 아래의 map이 익숙할 것이다.

map(int, input().split())

map(자료형, 순회 가능한 데이터) 형식으로 생각하는 분들도 있을 것이다.

map을 python documentation에 가서 확인해보면 map(function, iterable, ...)으로 되어있다.

사실 int 자체가 함수이기 때문에 성립가능한 것이다. ex) int("1234") ==> 1234

 

정리하자면, map(함수, 순회 가능한 데이터)로 입력되는 함수이다.

그러므로 map 안에 람다식을 쓸 수 있다.

** 순회 가능한 데이터의 예시: 리스트, 튜플 등등등..

 

arr = [1,2,3,4,5]
print(list(map(lambda x:x*x, arr)))
>> [1, 4, 9, 16, 25]
  • 람다식에 의해 배열이 각각 제곱되어 반환된다.

 

 

 

 

3. filter와 함께 쓰이는 람다


filter도 map과 인자는 같다. filter(함수, 순회 가능한 데이터) 형식이다.

웬만하면 불리언 형식을 반환하는 함수와 함께 써야한다.

arr = [i for i in range(20)]
print(list(filter(lambda x: x % 4 == 0, arr)))
>> [0, 4, 8, 12, 16]

 

 

 

 

4. sorted와 함께 쓰이는 람다


sorted(__iterable, key, reverse) 형식인데, 이 중 key의 역할로 쓰일 수 있다.

만약 문자열을 가진 배열에서 정렬을 진행할 때 두 번째 글씨로 정렬을 하고 싶다면 어떻게 해야할까?

아래의 코드를 확인해보자.

strings = ["apple", "bacon", "sea"]        # 첫 번째 글자로 정렬된 배열
print(sorted(strings, key=lambda x:x[1]))
>> ['bacon', 'sea', 'apple']
  • 두 번째 글자인 'a', 'e', 'p' 순서대로 정렬된 것을 확인할 수 있을 것이다.

 

아래와 같이 슬라이싱을 이용해 두 번째 글자 이후로 정렬을 진행할 수도 있다.

print(sorted(strings, key=lambda x:x[1:]))

 

'Python/파이썬 함수' 카테고리의 다른 글
  • [파이썬] 내가 보려고 만든 문자열 함수 2
  • [파이썬] itertools 사용하는 법 - 경우의 수
  • [파이썬] 내가 보려고 만든 문자열 함수
  • [파이썬] 내가 보려고 만든 파이썬 팁
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (1)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    부스트캠프 멤버십
    자바스크립트
    Git
    운영체제
    스프링부트
    알고리즘
    스프링
    os
    부스트캠프
    Spring
    java
    부스트캠프 7기
    MySQL
    웹개발
    오류해결
    파이썬
    Python
    jsp
    자바
    GitHub
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
[파이썬] 람다식 쓰는법
상단으로

티스토리툴바