python中的高階函數

1.高階函數
-實參是一個函數名
-函數的返回值是一個函數
print(abs(16))
f = abs
print(f(-10))
#函數本身也可以賦值給變量 變量可以指向函數
def fun(x,y,f):
return f(x),f(y)
print(fun(-10,34,abs))

python中的高階函數

2.內之高階函數_map

map():接收兩個參數,一個是函數 一個是序列
map將傳入的函數依次作用到序列的每個元素,並且把結果作爲新的序列返回

#對於一個序列[-1,3,-4,-5]的每一個元素求絕對值

import random

print(list(map(abs,[-1,3,-4,-5])))

python中的高階函數
#對於每個元素求階乘

def factoria(x):
"""對x求階乘"""
res = 1
for i in range(1,x+1):
res = res * i
return res
li = [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))

python中的高階函數

#將一個字符串轉換成整型

from functools import reduce

def str2int(s):
def char2int(ch):
c = {str(x): x for x in range(10)}
return c[ch]
def fun(n1, n2):
return n1 * 10 + n2
return reduce(fun, map(char2int, s))

num = str2int('12345')
print(type(num), num)

python中的高階函數

3.內置高階函數_filter

filter過濾函數
和map()類似的,也接收一個函數和一個序列
但是和map()不同的是,filter()把傳入的函數依次作用於
每個元素,然後根據返回值是True或者False決定保留還是丟棄該元素

def isodd(num):
if num % 2 == 0:
return True
else:
return False

print(list(filter(isodd,range(100))))

python中的高階函數

4.匿名函數
匿名函數的關鍵字爲 lambda,冒號前面是 形參 冒號後面是返回值 。
lambda函數能實現普通一樣的功能,能傳入參數,也能返回運算結果;不同的是lambda函數沒有函數名,通常只有一行的表達式,函數的複雜程度也有限。

from functools import reduce
def add(x,y):
return x+y
print(reduce(add,range(10)))
print(reduce(lambda x,y:x+y,range(10)))
def mypow(x):
return x2
print(list(map(lambda x:x
2,range(5))))
def isood(num):
return num%2 ==0
print(list(filter(lambda x:x%2==0,range(100))))

python中的高階函數

5.sorted( )函數

sorted( )函數是用來對可迭代對象排序的,與列表的list( )函數不同,後者是在原位置上進行排序的,排序後原列表的元素順序會發生改變,而前者是將排序後的結構生成到一個新的列表中。

s = ['dfs','Fds','tda','Eds']
print(s)
print(sorted(s))
print(sorted(s,key=str.lower))
print(sorted(s,key=str.upper,reverse=True))
python中的高階函數

info = [

商品名稱 商品數量 商品價格

('apple1',200,32),
('apple2', 40, 12),
('apple3', 1000, 23),
('apple1', 40, 2),
('apple1', 40, 5)

]

#按照商品數量進行排序
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))

python中的高階函數

#假設我們用一組tuple表示學生名字和成績,
L =[('Bob', 75), ('Adam', 92), ('Bart', 66),
('Lisa', 88)],按名字進行排序

python中的高階函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章