实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业

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

【Python基礎知識】Python高階函數

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

高階函數是指接收函數為參數,或者將函數作為結果返回的函數。

(1)sorted()函數

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

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

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

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

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

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

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

  1. >>> letters = ['a''Y''z''B'
  2. >>> sorted(letters)   # 未指定排序方式,按默認方式排序,大寫字母總在小寫字母前面 
  3. ['B''Y''a''z'
  4. >>> letters = ['a''Y''z''B']  
  5. >>> sorted(letters, key=str.lower)   # 將所有字母全部變為小寫字母再排序 
  6. ['a''B''Y''z'

除了使用內建函數之外,當然也可以使用自定義的函數來指定排序規則。仍然使用前面的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參數提供一個值而編寫一個普通函數是不太值得的,往往使用匿名函數即可:

  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'

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

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

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

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

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

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

例如,下面的字典中存儲著各個同學的分數,使用max()找到分數最高的同學:

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

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

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

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

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

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

  1. >>> def sum_digit(num): 
  2. ...     sum = 0  
  3. ...     while num: 
  4. ...         sum += num % 10 
  5. ...         num = num // 10 
  6. ...     return sum 
  7. >>> # 下面簡單測試一下這個函數的正確性 
  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. >>> # 下面使用這個函數作為key參數的值 
  15. >>> numbers = [15400280082142100099
  16. >>> min(numbers, key=sum_digit) 
  17. 1000 

文章“【Python基礎知識】Python高階函數”已幫助

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

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

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

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | DAIKIN电磁阀-意大利ATOS电磁阀-上海乾拓贸易有限公司 | 求是网 - 思想建党 理论强党 | 广州小程序开发_APP开发公司_分销商城系统定制_小跑科技 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 北京百度网站优化|北京网站建设公司-百谷网络科技 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 防锈油-助焊剂-光学玻璃清洗剂-贝塔防锈油生产厂家 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 |