Python lambda로 처리

9549 단어 람다파이썬

소개



Python의 lambda 식을 자신이 잘 잊어 버리는 경향이 있으므로 메모로 남겨 둡니다.
다른 분의 참고도 된다고 생각합니다.間違っている箇所もあると思いますので, コメントしていただけると幸いです.
파이썬은 def ()로 함수를 정의하지만 lambda 표현식으로 익명 함수를 정의 할 수 있습니다.
def() 를 사용한 함수의 경우, 인수로서 직접 다른 함수에 건네줄 수 없고, 다른 장소에서 정의하고 나서 값을 건네줄 필요가 있는 것에 대해, lambda 식은 어디까지나 「식」으로 따라서 함수의 인수로 직접 전달할 수 있습니다! ! ! !

다음 섹션에서 예제를 소개합니다.

def 문과 lambda 식의 대응 관계


def add(x, y=1):
    return x+y

print(add(1,2))
# 3

print(add(100))
# 101

위의 def 문을 lambda 식으로 변환하면
f = lambda x, y=1: x+y

print(f(1,2))
# 3

print(f(100))
# 101
しかしながら, 上記のようにlambda式を変数に代入している記法は, PEP8では非推奨となっているので
注意してください

lambda 식으로 if 문 처리



for문으로 하나하나 처리할 때, if문의 조건분기가 들어가는 경우라도 lambda식을 활용할 수 있습니다!
number_list = [1,2,3,4,5]

odd_number = []
for i in number_list:
    if i % 2 == 0:
       print(f"{i}は偶数である")
    else:
       print(f"{i}は奇数である")
       odd_number.append(i)

print(odd_number)
# [1,3,5]

위의 for 문이 lambda 식을 사용하여 다시 작성된 경우
number_list = [1,2,3,4,5]
odd_number = filter(lambda i : i % 2 != 0, number_list)

print(list(odd_number))
# [1,3,5]

sorted 함수



목록을 정렬하는 내장 함수에는 인수 key가 있습니다.
key는 정렬 전에 목록의 각 요소에 적용되는 함수를 지정합니다.
a = [[0,7,4], [2,5,6], [7,4,2]]
b = sorted(a)

print(b)
# [[0,7,4], [2,5,6], [7,4,2]]

위의 sorted 함수에서 lambda 표현식을 사용하는 경우
a = [[0,7,4], [2,5,6], [7,4,2]]
b = sorted(a, key=lambda x: x[-1]) 

print(b)
# [[7, 4, 2], [0, 7, 4], [2, 5, 6]]

map 함수



목록의 각 요소에 대해 일정한 처리를 한 값을 사용하려면 map 함수를 적용합니다.
def doubler(x):
    return x*2

L = [1, 2, 3, 4, 5, 6]
mod_list = map(doubler, L)

print(list(mod_list))
# [2, 4, 6, 8, 10, 12]

위의 map 함수에서 lambda 식을 활용한 경우
L = [1, 2, 3, 4, 5, 6]
doubler = map(lambda x: x*2, L)
print(list(doubler))
# [2, 4, 6, 8, 10, 12]

요약



이번에는 lambda에서의 처리에 대해 기사로했습니다.
틀린 부분이 있었을 경우는 코멘트 해 주시면 다행입니다.
앞으로도 파이썬 팁을 기사로하겠습니다

참고문헌


  • 파이썬에서 lambda 표현식 사용법
  • 좋은 웹페이지 즐겨찾기