PYTHON - Lambda function

jwKim·2023년 2월 11일
0

🌈 Python/SQL Tip

목록 보기
2/8

람다 함수

기본 사용법

  • 함수를 이름 없이 만들어주기 때문에 함수를 한 줄에 작성 가능하게 해줌
    • 따라서 람다 표현식 뒤에 괄호가 나오는 경우는 함수의 입력값으로 생각하면 됨
    • (lambda 매개변수 : 매개변수의 동작)(입력값)
  • 아래에서 다른 기본 함수들과 함께 사용하는 방법을 확인 가능하다.
# 일반 함수
def fn_plus(x, y):
    return x + y

fn_plus_val = fn_plus(10, 2)
print(fn_plus_val)

# 람다 함수
lambda_plus_val = (lambda x, y : x + y)(10, 2)
print(lambda_plus_val)
12
12

map() 함수

  • map(함수, list나 tuple)
# 입력받은 수를 제곱하기
lst = [1, 2, 3]

# 일반 함수
def fn_square(x):
    return x**2

fn_square_val = list(map(fn_square, lst))
print(fn_square_val)

# 람다 함수
lambda_square_val = list(map((lambda x : x**2), lst))
print(lambda_square_val)
[1, 4, 9]
[1, 4, 9]

filter() 함수

  • filter(함수, list나 tuple)
# 3의 배수만 리스트로 만들기
rng = range(0, 7)

# 일반함수
def fn_filter(x):
    return x % 3 == 0

fn_filter_val = list(filter(fn_filter, rng))
print(fn_filter_val)

# 람다함수
lambda_filter_val = list(filter((lambda x : x % 3 == 0), rng))
print(lambda_filter_val)
[0, 3, 6]
[0, 3, 6]

조건문

# 5 이상이면 Good, 2 이하이면 Bad, 나머지는 Soso 저장
rng = range(9)

# 일반 함수
def fn_condition(x):
    if x >= 5:
        return 'Good'
    elif x <= 2 :
        return 'Bad'
    else:
        return 'Soso'
        
fn_condition_val = list(map(fn_condition, rng)) 
print(fn_condition_val)

# 람다 함수
lambda_condition_val = list(map((lambda x : 'Good' if x >= 5 else 'Bad' if x <= 2 else 'Soso'), rng))
print(lambda_condition_val)
['Bad', 'Bad', 'Bad', 'Soso', 'Soso', 'Good', 'Good', 'Good', 'Good']
['Bad', 'Bad', 'Bad', 'Soso', 'Soso', 'Good', 'Good', 'Good', 'Good']

sort() 함수

D2_list = [['수학', 3], ['수학_활용', 5], ['영어', 4], ['영어회화', 7], ['슬기로운생활', 2], ['도덕', 3], ]

# 첫 번째 인자를 기준으로 오름차순 정렬
D2_list.sort(key=lambda x : (x[0]))
print('첫 번째 인자 기준 오름차순')
print(D2_list)

# 두 번째 인자를 기준으로 내림차순 정렬
D2_list.sort(key=lambda x : (-x[1]))
print('\n두 번째 인자 기준 내림차순')
print(D2_list)
첫 번째 인자 기준 오름차순
[['도덕', 3], ['수학', 3], ['수학_활용', 5], ['슬기로운생활', 2], ['영어', 4], ['영어회화', 7]]

두 번째 인자 기준 내림차순
[['영어회화', 7], ['수학_활용', 5], ['영어', 4], ['도덕', 3], ['수학', 3], ['슬기로운생활', 2]]

출처

1개의 댓글

comment-user-thumbnail
2023년 2월 22일

lambda 함수를 사용해서 딕셔너리에 대한 정렬도 할 수 있다. 몇 번째 인자를 기준으로 정렬할지, 오름/내림차순 정렬 여부도 동일하게 사용할 수 있다.

예)
sorted(sample_dict.items(), key=lambda x : -x[1])

답글 달기