能夠把函數(shù)當(dāng)成參數(shù)傳遞的參數(shù)就是高階函數(shù)
map
map:
功能: 拿iterable的每一個元素放入func中,
func的返回值放入迭代器內(nèi)進行返回
參數(shù): iterable, func
返回: 迭代器
# ["a","c","b"] => [97,99,98]
dictvar = {97:"a",98:"b",99:'c',100:'d',101:'e'}
def func(x):
print(1)
for k, v in dictvar.items():
if v == x:
return k
li = ["a","c","b"]
res = map(func, li)
print(list(res))
reduce
# 需要導(dǎo)入
from functools import reduce
"""
功能: 第一次拿出iterable的元素, 放入func中進行計算
計算結(jié)果再和iterable的下一個元素傳入func進行計算,
以此類推直到最后一個,計算的結(jié)果作為返回值返回
參數(shù): func iterable
返回: 最后一次調(diào)用func的計算結(jié)果
"""
# (1)[5,4,8,8] => 整型5488
li = [5,4,8,8]
def func(x, y):
return x*10 + y
res = reduce(func, li)
print(res)
sorted
"""
功能: 把iterable的每一個元素放入func中獲取返回值,
按照返回值對原元素進行排序(不會修改原變量)
參數(shù): iterable, reverse(False默認從小到大), key=func
返回值: 排序后的一個列表
如果func返回值一樣, 就按照字面順序不動
[-1, -11, 99, 89] 余數(shù)都是9,
排序后與原列表保持一致(無論正序倒序)
"""
listvar = (3.14,56,-9,1)
res = sorted(listvar, reverse=False) # 小到大
res = sorted(listvar, reverse=True) # 大到小
print(res)
# 使用abs()進行絕對值排序
listvar = [-1,99,78,-33]
res = sorted(listvar, reverse=True, key=abs)
print(res)
# 按照余數(shù)排序
def func(x):
return x % 10
listvar = [-1,99,78,-33]
res = sorted(listvar, key=func)
print(res)
filter
filter
"""
功能: 過濾,
把iterable的每一個元素依次放入func,
返回True就保留, 返回False就丟棄
參數(shù): func, iterable
返回: 過濾后的迭代器
"""
listvar = [1,2,3,4,5,6,7,8,9]
# 過濾所有的奇數(shù) 要偶數(shù)
def func(x):
if x % 2==0:
return True
return False
res = filter(func, listvar)
print(list(res))
# 使用lambda簡化
res = filter(lambda x : True if x%2==0 else False, listvar)
print(list(res))