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

歡迎訪問 生活随笔!

生活随笔

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

python

python基础之常用的高阶函数

發(fā)布時間:2023/12/13 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础之常用的高阶函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

高階函數(shù)指的是能接收函數(shù)作為參數(shù)的函數(shù)或類;python中有一些內置的高階函數(shù),在某些場合使用可以提高代碼的效率.

map()

map函數(shù)可以把一個迭代對象轉換成另一個可迭代對象,不過在python3中,結果都是一個map對象,它是一個生成器,可以通過next函數(shù)獲取它的元素;使用map函數(shù)的代碼效率比for循環(huán)和列表生成式都要高。

參數(shù):

一個函數(shù)func,可以是任何函數(shù);

一個或多個可迭代對象,可以是元組、集合、列表等;如果函數(shù)有多個參數(shù)就傳入多個可迭代對象;

# 單個參數(shù) p = map(int,{2,3,4,5})# 多個參數(shù) def add(x,y,z):return x+y+zp1 = map(add,[1,2,3],(4,5,6),{7,8,9}) # 注意如果是集合,順序是不固定的 # 由于是一個map對象,可以轉換為list對象 li = list(p1)

reduce()

reduce函數(shù)在python3中被放置到functool模塊中了,要使用需要引入;

參數(shù):一個函數(shù)f,一個可迭代對象,一個可選的初始值;

功能:通過對函數(shù)f的反復調用,可以得到最終的積累結果;

def test5(listx):from functools import reduceres = reduce(add1,listx)print(res) def add1(x,y):return x+yli = [1,2,4,7,8] test5(li)

filter()

過濾函數(shù),可以將可迭代對象里的每個元素依次作用于過濾函數(shù),通過返回的false和true對元素進行保留或丟棄;最后返回一個filter對象,該對象是一個生成器;

參數(shù): func:一個過濾函數(shù),可以是匿名函數(shù); iterator:一個等待過濾的可迭代對象; li = [1, 2, 4, 7, 8] res = filter(lambda x: x % 2 == 1, li) print(list(res))

max

max內置函數(shù)不僅僅是用來獲取一個容器中的算術最大值,事實上它可以自定義比較的規(guī)則。

# 參數(shù): key:比較的規(guī)則 values:比較值 x = max(['name','age','you'],key=lambda x:len(x)) print(x) # name y = max('name','age','you',key=lambda x:len(x)) print(y) # name

min

用來獲取一個容器中的最小值,用法參考max.

sorted

sorted函數(shù)用來對容器里的元素進行重新排序并返回一個新的容器,支持自定義比較規(guī)則。

# 參數(shù) key:比較規(guī)則; reverse:排列規(guī)則,默認False,升序排列 values:第一個參數(shù)必須是一個容器 x = sorted(['name','age','you'],key=lambda x:len(x),reverse=False) print(x)

partial

偏函數(shù)partial是一個類,有時候一些函數(shù)在使用的時候要求不能有參數(shù)或者為了少傳遞參數(shù),典型的如flask框架中的session和g等代理對象的創(chuàng)建,這時可以將函數(shù)轉化成偏函數(shù);它的原理是將函數(shù)的對象和參數(shù)作為參數(shù)生成一個partial對象,調用時傳入的新參數(shù)和對象存儲的參數(shù)合并后再調用原來的函數(shù),即將傳參分成兩步完成。

from functools import partial, partialmethod new_func = partial(get_values, *(2,3)) # 第一步先傳兩個參數(shù),注意需要解包 print(new_func(4)) # 再傳最后一個參數(shù)

總結

  • partial類的作用就是將一個函數(shù)執(zhí)行拆成兩步:先傳參后執(zhí)行或先傳部分參,后再傳參調用執(zhí)行;

  • sorted方法對容器元素按照指定的規(guī)則排序;

  • max和min方法按照指定的比較規(guī)則選出容器的最大最小值;

  • filter類對容器元素進行過濾;

  • reduce方法對元素迭代積累;

  • map類按照自定規(guī)則將容器里的所有元素轉化成另外的元素值得到一個新的容器;

參考

  • https://docs.python.org/3/

轉載于:https://www.cnblogs.com/cwp-bg/p/8859260.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的python基础之常用的高阶函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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