lambda
square_func = lambda x: x**2
square_func(2)
# equals to
def square_func(x):
return x**2
Python 的 lambda
其實就是 JavaScript 的 arrow function
map
list 的每一個元素都會各自經過 def func(x)
去處理
最後得到的會是一個新的數量相同的 list
def double(number):
return number * 2
print(list(map(double, [1, 2, 3, 4])))
# [2, 4, 6, 8]
# equals to
print(list(map(lambda number: number * 2, [1, 2, 3, 4])))
reduce
list 中的元素會兩兩經過 def func(x, y)
去處理
最後得到的會是一個單一的值
def add(x, y):
return x + y
print(reduce(add, [1, 2, 3, 4]))
# ((((1+2)+3)+4)+5) = 10
# equals to
print(reduce(lambda x, y: x + y, [1, 2, 3, 4]))
filter
對 list 的每一個元素做 def func(x)
產生一個新的 list 只包含 def func(x)
結果為 True 的元素
ref:
http://www.vinta.com.br/blog/2015/functional-programming-python.html
http://www.bogotobogo.com/python/python_fncs_map_filter_reduce.php
zip
number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']
list(zip(number_list, str_list))
# [(1, 'one'), (2, 'two'), (3, 'three')]
ref:
https://www.programiz.com/python-programming/methods/built-in/zip