日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python把函数作为参数传入的高阶编程方法

發(fā)布時間:2023/12/20 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python把函数作为参数传入的高阶编程方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

map:接受兩個參數(shù)(函數(shù),Iterable),map將傳入的函數(shù)依次作用于Iterable的每個元素,并且返回新的Iterable

def f(x):return x*x r = map(f,[1,2,3,4]) #此時的r為惰性求值——可用next()和for...in取值 #通過list()返回全部 print(list(r)) #[1, 4, 9, 16]

reduce:接受兩個參數(shù)(函數(shù),序列),reduce把一個函數(shù)作用于序列上,返回的結果繼續(xù)和序列的下一個元素做累積計算,其效果為:reduce(f,[x,y,z])=>f(f(x,y),z)

from functools import reduce def add(x,y):return x+y reduce(add,[1,3,5,7,9]) #25

filter:過濾序列。接受兩個參數(shù)(函數(shù),序列),filter把函數(shù)作用于序列上,根據(jù)返回值是否為True,決定是否放棄該元素

def is_odd(x):return x%2==1 list(filter(is_odd,[1,2,3,4,5,6,7,8,9])) #filter惰性求值[1, 3, 5, 7, 9]

sorted:排序,可排序對象包括數(shù)字list、字符串list、dict等,可接受三個參數(shù),后兩個為可選

# sorted([],key=express,reverse=True) key:對每個元素的處理方法 reverse:是否反向排序 sorted([0,1,-2,-1,6,3,8],key=abs,reverse=True) #[8, 6, 3, -2, 1, -1, 0]

匿名函數(shù)?lambda:匿名函數(shù)關鍵字 :前的元素表示匿名函數(shù)的參數(shù) 匿名函數(shù)不用謝return表達式,返回值就是該表達式的值

m = list(map(lambda x: x*x,[1,2,3,4])) print(m) #[1, 4, 9, 16]from functools import reducedict1 = {'zhangsan': 90, 'lisi': 100, 'wangwu': 89, 'zhaoliu': 92} result = sorted(dict1.items(), key=lambda x: x[1]) dict1 = dict(result) print(dict1)# map 映射 [1,4,9,16,25] map1 = map(lambda x: x + 2, [1, 2, 3, 4, 5]) print(map1) print(list(map1))names = ['tom', 'jack', 'lily', 'lucy', 'lily'] map2 = map(lambda x: x.capitalize(), names) print(tuple(map2))# filter() filter(function or None, iterable) --> filter objectnumbers = [2, 4, 7, 9, 0, 12, 45, 78, 23] filter1 = filter(None, numbers) print(list(filter1))filter2 = filter(lambda x: x % 2 == 0, numbers) print(list(filter2))list1 = ['hello', 30, '80', 50, 'hi100', '99', 'yes']filter3 = filter(lambda x: str(x).isdigit(), list1) print(list(filter3))filter3 = filter(lambda x: isinstance(x, int) or x.isdigit(), list1) print(list(filter3))students = [('tom', 21), ('lucy', 18), ('jack', 22), ('lily', 19), ('jerry', 24)] filter4 = filter(lambda x: x[1] > 20, students) print(list(filter4))# reduce() reduce(function, sequence[, initial]) -> value initial為初值 list2 = [1, 2, 3, 4] result = reduce(lambda x, y: x + y, list2, 1) print(result)def add(x, y):return x + y from functools import reduce print(reduce(add, [1, 2, 3, 4], 1))# result = reduce(lambda x, y: x * y, range(1, 6)) print(result)map0 = map(lambda x, y: x + y, [1, 2, 3], [2, 2, 2]) print(list(map0))# a ,b,c = map(int,input('請輸入').split(' '))def is_odd(x):return x%2==1 list(filter(is_odd,[1,2,3,4,5,6,7,8,9])) print(filter(is_odd,[1,2,3,4,5,6,7,8,9]))

裝飾器:代碼運行期間動態(tài)增加功能

#在now函數(shù)運行前自動打印日志 import functools def log(func):@functools.wraps(func)def wrpper(*args,**kw):print("call %s()" % func.__name__)return func(*args,**kw)return wrpper # 調用裝飾器 @log def now():print("hello")now() #call now() hello

偏函數(shù):functools.partial 把函數(shù)的某些參數(shù)固定住,返回一個新的函數(shù),使調用更簡單

import functools int2 = functools.partial(int,base=2) print(int2("1000000")) #64偏函數(shù)是functools.partial()函數(shù),將原函數(shù)當做第一個參數(shù)傳入,原函數(shù)的各個參數(shù)依次作為partial()函數(shù)后續(xù)的參數(shù),除非使用關鍵字參數(shù)。 舉個栗子:import functoolsdef index(n1, n2):return n1 + n2num_func = functools.partial(index, 666) # 666傳給了第二個參數(shù)n2print(num_func(1)) # 結果輸出為667

?

總結

以上是生活随笔為你收集整理的Python把函数作为参数传入的高阶编程方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。