实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎(chǔ)知識】Python高階函數(shù)

【Python基礎(chǔ)知識】Python高階函數(shù)

  • 發(fā)布: python培訓(xùn)
  • 來源:python干貨資料
  • 2020-11-25 10:59:12
  • 閱讀()
  • 分享
  • 手機(jī)端入口

高階函數(shù)是指接收函數(shù)為參數(shù),或者將函數(shù)作為結(jié)果返回的函數(shù)。

(1)sorted()函數(shù)

sorted()函數(shù)用于對可迭代對象進(jìn)行排序。除此之外,sorted()函數(shù)是高階函數(shù),可以傳遞給sorted()函數(shù)一個自定義的函數(shù)作為參數(shù),這個參數(shù)的名字是key,必須以關(guān)鍵字參數(shù)的形式傳遞。sorted()函數(shù)要比較的每個值都會傳入key指定名稱的函數(shù)內(nèi),并根據(jù)該函數(shù)的返回值進(jìn)行比較,以實(shí)現(xiàn)按自定義的排序方式進(jìn)行排序。

例如,下面的列表中包含了一些代表動物的字符串,將它們進(jìn)行排列:

  1. >>> animals = ['panda''lion''tiger''fox''elephant'
  2. >>> sorted(animals)   # 未指定key參數(shù) 
  3. ['elephant''fox''lion''panda''tiger'
  4. >>> sorted(animals, key=len)   # 指定key參數(shù)的值為len 
  5. ['fox''lion''panda''tiger''elephant'

在未指定key參數(shù)的情況下,列表按照字典順序排序。在指定key參數(shù)的值為len的情況下,列表按照字符串的長度排序(len()函數(shù)),animals列表中的每個字符串都“輸入”len()函數(shù),再將字符串的長度作為返回值“輸出”,如'fox'的長度為3,數(shù)值最小,故排在第一位,'elephant'長度為8,數(shù)值最大,故排在最后一位。注意,此處len()函數(shù)沒有括號,是將函數(shù)名作為參數(shù),如果加上括號,那么是調(diào)用函數(shù)。

再舉另外一個示例,字符串的lower()方法是將字母變成小寫字母,同樣也可以使用str.lower()將lower()方法作為函數(shù)使用,下面兩種方式是等價的:

  1. >>> 'P'.lower() 
  2. 'p' 
  3. >>> str.lower('P'
  4. 'p' 

知道這個知識后,就能將str.lower()函數(shù)用在字符串排序中了。下面的示例中,將含有字母的列表排序:

  1. >>> letters = ['a''Y''z''B'
  2. >>> sorted(letters)   # 未指定排序方式,按默認(rèn)方式排序,大寫字母總在小寫字母前面 
  3. ['B''Y''a''z'
  4. >>> letters = ['a''Y''z''B']  
  5. >>> sorted(letters, key=str.lower)   # 將所有字母全部變?yōu)樾懽帜冈倥判?/span> 
  6. ['a''B''Y''z'

除了使用內(nèi)建函數(shù)之外,當(dāng)然也可以使用自定義的函數(shù)來指定排序規(guī)則。仍然使用前面的animals列表,這次將'panda'排在第一位,剩下的動物依舊按照字符串的長度排序。

  1. >>> animals = ['panda''lion''tiger''fox''elephant'
  2. >>> def panda_first(animal): 
  3. ...     if animal == 'panda':   # 如果是'panda',返回0,使其排在第一位 
  4. ...         return 0 
  5. ...     else:   # 如果是其他動物,那么返回它的長度 
  6. ...         return len(animal) 
  7. ...  
  8. >>> sorted(animals, key=panda_first)   
  9. ['panda''fox''lion''tiger''elephant'

然而,通常為了給key參數(shù)提供一個值而編寫一個普通函數(shù)是不太值得的,往往使用匿名函數(shù)即可:

  1. >>> animals = ['panda''lion''tiger''fox''elephant'
  2. >>> sorted(animals, key=lambda animal: 0 if animal == 'panda' else len(animal)) 
  3. ['panda''fox''lion''tiger''elephant'

這個匿名函數(shù)看起來有些復(fù)雜,它的參數(shù)是animal,表達(dá)式是一個三目表達(dá)式:如果animal的值是'panda',返回0,否則返回animal的長度。使用匿名函數(shù)可以在一行內(nèi)方便地將列表排列成指定順序。

使用sorted()函數(shù)和匿名函數(shù)還可以用來給字典排序。例如,將下面的水果字典(將字典的值想象為水果數(shù)量)按照水果數(shù)量從大到小的順序排序:

  1. >>> fruits = {'apple'10'banana'42'orange'5'mango'18
  2. >>> sorted(fruits.items(), key=lambda item: item[1])   #比較字典的第2項(xiàng) 
  3. [('orange'5), ('apple'10), ('mango'18), ('banana'42)] 

由于sorted()函數(shù)只能對可迭代對象進(jìn)行排序,而字典的items()方法返回的值可以迭代,因此,可以使用items()方法進(jìn)行迭代。

(2)max()函數(shù)和min()函數(shù)

max()函數(shù)和min()函數(shù)也是高階函數(shù),與sorted()函數(shù)的相似之處在于,它們也要經(jīng)過比較才能返回值(可以理解為sorted()排序后的最大值和最小值)。max()函數(shù)和min()函數(shù)也有key參數(shù),作用機(jī)制與sorted()函數(shù)一致。

例如,下面的字典中存儲著各個同學(xué)的分?jǐn)?shù),使用max()找到分?jǐn)?shù)最高的同學(xué):

  1. >>> grade = {'小明'72'梅梅'81'麗麗'58
  2. >>> max(grade.items(), key=lambda item: item[1]) 
  3. ('梅梅'81

假設(shè)老師給小明加了10分,那么需要改動匿名函數(shù):

  1. >>> grade = {'小明'72'梅梅'81'麗麗'58
  2. >>> max(grade.items(), key=lambda item: item[1] + 10 if item[0] == '小明' else item[1]) 
  3. ('小明'72

min()函數(shù)與max()函數(shù)是相似的,只是min()函數(shù)返回的是最小值:

  1. >>> numbers = [15400280082142100099
  2. >>> min(numbers) 
  3. 15 

下面將用自定義的函數(shù)作為key參數(shù)的值,這個參數(shù)返回一個數(shù)字各個位相加的和(由于這個函數(shù)稍微有些復(fù)雜,因此,建議使用def關(guān)鍵字定義函數(shù)):

  1. >>> def sum_digit(num): 
  2. ...     sum = 0  
  3. ...     while num: 
  4. ...         sum += num % 10 
  5. ...         num = num // 10 
  6. ...     return sum 
  7. >>> # 下面簡單測試一下這個函數(shù)的正確性 
  8. >>> sum_digit(46)  # 4和6相加為10 
  9. 10 
  10. >>> sum_digit(99)  # 9和9相加為18 
  11. 18 
  12. >>> sum_digit(1000# 1和0相加為1 
  13. 1 
  14. >>> # 下面使用這個函數(shù)作為key參數(shù)的值 
  15. >>> numbers = [15400280082142100099
  16. >>> min(numbers, key=sum_digit) 
  17. 1000 

文章“【Python基礎(chǔ)知識】Python高階函數(shù)”已幫助

>>本文地址:http://m.jecan.cn/zhuanye/2020/61386.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個方向的工作?

獲取測試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營全域電商運(yùn)營
  • 軟件測試軟件測試
  • 室內(nèi)設(shè)計室內(nèi)設(shè)計
  • 平面設(shè)計平面設(shè)計
  • 電商設(shè)計電商設(shè)計
  • 網(wǎng)頁設(shè)計網(wǎng)頁設(shè)計
  • 全鏈路UI/UE設(shè)計UI設(shè)計
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開發(fā)智能機(jī)器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 微型实验室真空泵-无油干式真空泵-微型涡旋耐腐蚀压缩机-思科涡旋科技(杭州)有限公司 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 数控走心机-双主轴走心机厂家-南京建克 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 |