在python中定義高階函數的方法
1.map函數
map函數可以接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,并且把結果作為新的列表返回。
定義方法:
import random
#定義階乘函數
def f(x):
res = 1
for i in range (1,x+1):
res *= i
return res
#定義作用的列表
li = [random.randint(2,7) for i in range(10)]
print(li)
#將函數作用于列表
print(list(map(f,li)))
2.reduce函數
reduce函數是將一個函數作用到一個序列上,這個函數必須接收兩個參數,reduce把結果和序列的下一個元素做累積計算。
定義方法:
from functools import reduce
def multi(x,y):
return x*y
print(reduce(multi,range(1,4))) //累乘
def add(x,y):
return x+y
print(reduce(add,[1,2,3,4,5])) //累加
3.sorted函數
sorted函數是排序函數,可以把用戶名按照首字母不區分大小寫進行排序。
定義方法:
# 按照數量進行排序
def sorted_by_count(x):
return x[1]
# 按照價格進行排序
def sorted_by_price(x):
return x[2]
# 先按照數量進行排序,在按照價格進行排序。
def sorted_by_count_price(x):
return x[1],x[2]
print(sorted(info,key=sorted_by_count))
print(sorted(info,key=sorted_by_price))
print(sorted(info,key=sorted_by_count_price))