lambda

sihwan_e·2021년 1월 22일
0

lambda

# Lambda 는 함수를 딱 한줄만으로 만들게 해주는 훌륭한 도구이다.

#lambda 인자 : 표현식

def plus(x, y):
    return x + y


print(plus(10, 20))


a = (lambda x, y: x+y)(10, 20)
print(a)

# 아직은 이게 편한지에 대한 감이 잘 오지 않는다.

# map 에서의 활용
# map(함수, 리스트)
# map은 함수와 리스트를 인자로 받아서, 리스트로부터 원소를 꺼내어 함수에 적용시키고 그것을
# 새로운 리스트에 담아준다.

c = map(lambda x: x + 2, range(5))
print(c)
# 함수 객체가 나오는 이유는, 람다 표현식은 이름이 없는 함수를 만들기 떄문이다.
# 그래서 람다 표현식을 익명함수(anonymous function)이라하기도한다

v = list(map(lambda x: x + 2, range(5)))
print(v)

g = list(map(lambda x: x + 10, [1, 2, 3]))
print(g)
# filter
#filter(함수, 리스트)
# filter는 리스트의 요소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 만들어 준다.
f = list(filter(lambda x: x < 5, range(10)))
print(f)

#요전에 풀엇던 문제에서의 람다
#sorted(fail, key=lambda x: fail[x], reverse=True)

#lambda 인자 : 표현식
fail이라는 딕셔너리구조를  lambda 를 이용해서 x를 키로하여 밸류들을 sorted

람다는 아무리 일시적으로 쓰려고 만든다곤하지만 계속계속 써서 익숙하게 만들어야 할것같다.

a = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]
c = sorted(a, key = lambda x : x[0])
# print(c) = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]

키 함수

(파이썬 공식문서 발췌)
list.sort()와 sorted()는 모두 비교하기 전에 각 리스트 요소에 대해 호출할 함수(또는 다른 콜러블)를 지정하는 key 매개 변수를 가지고 있습니다.

예를 들어, 다음은 대소 문자를 구분하지 않는 문자열 비교입니다:


>>>
sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

key 매개 변수의 값은 단일 인자를 취하고 정렬 목적으로 사용할 키를 반환하는 함수(또는 다른 콜러블)여야 합니다. 키 함수가 각 입력 레코드에 대해 정확히 한 번 호출되기 때문에 이 기법은 빠릅니다.

일반적인 패턴은 객체의 인덱스 중 일부를 키로 사용하여 복잡한 객체를 정렬하는 것입니다. 예를 들어:

>>>
student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
gg = sorted(student_tuples, key=lambda x: x[2])
print(gg)

>>>[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

student든, x든 지정은 내맘이다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글