def callback_func(func):
for i in range(5):
func()
def print_hello():
print('안녕하세요! 파이썬!')
print_hello()
안녕하세요! 파이썬!
callback_func(print_hello)
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
def callback_func(func, num):
for i in range(num):
func(i)
def print_hello(num):
print('안녕하세요! 파이썬!', num)
def print_hi(num):
print('하이! 파이썬!', num)
callback_func(print_hello, 3)
callback_func(print_hi, 5)
안녕하세요! 파이썬! 0
안녕하세요! 파이썬! 1
안녕하세요! 파이썬! 2
하이! 파이썬! 0
하이! 파이썬! 1
하이! 파이썬! 2
하이! 파이썬! 3
하이! 파이썬! 4
lambda 매개변수: 표현식
간결성: 람다 함수는 간단한 연산이나 작은 기능을 가진 함수를 간결하게 표현하는 데 유용.
익명성: 람다 함수에는 명시적인 이름이 부여되지 않는다. 그러나 필요에 따라 변수에 할당할 수 있다.
일회성: 일반적으로 특정 작업을 위한 일회성 함수로 사용된다.
def square(x):
return x**2
print(square(5))
square = lambda x: x**2 # lambda는 무조건 리턴형
print(square(5))
(lambda x: x**2)(5)
25
25
25
people = [
{'name':'오렌지', 'age':30},
{'name':'김사과', 'age':20},
{'name':'반하나', 'age':25}
]
def sort_age(x):
return x['age'] #{'name':'오렌지', 'age':30}
people[0]
print(sort_age(people[0]))
30
sorted_people = sorted(people, key=sort_age)
# 기본: 오름차순, sort_age()→이렇게 쓰지 않은 것은 주소값을 넣었기 때문.
print(sorted_people)
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]
sorted_people = sorted(people, key=sort_age, reverse=True)
print(sorted_people)
[{'name': '오렌지', 'age': 30}, {'name': '반하나', 'age': 25}, {'name': '김사과', 'age': 20}]
sorted_people = sorted(people, key=lambda x: x['age']) # lambda -> 함수를 일회용으로 사용하기 위함.
print(sorted_people)
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]
li = [2, 5, 7, 10, 15, 17, 20, 22, 25, 28]
def even(n):
if n%2 == 0:
return True
else:
return False
result = list(filter(even, li)) # # filter(even, li) 객체를 리스트로 변환
print(result)
[2, 10, 20, 22, 28]
result = list(filter(lambda n: n%2 == 0, li))
print(result)
[2, 10, 20, 22, 28]
num = [1, 2, 3, 4, 5]
squared_num = list(map(lambda x: x**2, num))
print(squared_num)
[1, 4, 9, 16, 25]
li1 = [1, 2, 3]
li2 = [4, 5, 6]
sum = list(map(lambda x, y: x+y, li1, li2))
print(sum)
[5, 7, 9]
words = ['apple', 'banana', 'orange', 'cherry']
upper_words = list(map(lambda x: x.upper(), words))
print(upper_words)
['APPLE', 'BANANA', 'ORANGE', 'CHERRY']
→ map() 함수는 결과를 이터레이터 형태로 반환하기 때문에
그 결과를 직접 출력, 인덱싱, 슬라이싱하기 위해서는 list()나 비슷한 함수를 사용하여
이터레이터를 실제 리스트나 다른 데이터 구조로 변환해야 한다.