람다는 이름없이 선언할 수 있는 익명 함수이다.
lambda arguments: expression
형식을 따른다.
# (a+b)^2
answer = lambda a, b: a**2 + b**2 + 2*(a+b)
print(answer(3, 6))
loop 없이 지정된 element 들을 반복한다
map(function,iterables)
형식을 따른다
def add_list(a,b):
return a+b
output = list(map(add_list,[2,6,3],[3,4,5]))
print(output) # [5, 10, 8]
Never use the builtin map!!
👉 use a list comprehension
# Loop
for entry in entries:
process(entry)
# Map
map(process, entries)
# List Comprehension
[process(entry) for entry in entries]
# Loop
results = []
for entry in entries:
results.append(process(entry))
# Map
results = map(process, entries)
# List Comprehension
results = [process(entry) for entry in entries]
주어진 조건에 따라 값을 걸러내는 내장 함수
filter(function,iterable)
형식을 따른다- list comprehension으로 작성한 코드가 2배 이상 빠르다.
output = list(filter(lambda a: a > 0, [1, -2, 3, -4, 5, 6]))
print(output) # [1, 3, 5, 6]
output = list([a for a in [1, -2, 3, -4, 5, 6] if a > 0])
print(output) # [1, 3, 5, 6] 속도가 더 빠르다
n개의 iterables들의 데이터를 추출하여 튜플로 변경하는 내장 함수
zip(*iterables)
형식을 따른다
user_id = ["12121","56161","33287","23244"]
user_name = ["Mick","John","Tessa","Nick"]
user_info = list(zip(user_name,user_id))
print(user_info) # [(‘Mick’, ‘12121’), (‘John’, ‘56161’), (‘Tessa’, ‘33287’), (‘Nick’, ‘23244’)]
주어진 iterable의 모든 요소에 동일한 작업을 적용할 때 사용된다.
functools
모듈 함수이다functools.reduce(function, iterable)
형식을 따른다
import functools
def sum_two_elements(a,b):
return a+b
numbers = [6,2,1,3,4]
result = functools.reduce(sum_two_elements, numbers)
print(result) # sum(numbers)와 같은 결과가 나온다.
numbers = [i for i in range(1, 10)]
result = functools.reduce(lambda a, b: a * b, numbers)
print(result) # 10!와 같은 결과가 나온다.