最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python學(xué)習(xí)之魔法函數(shù)(filter,map,reduce)詳解

 更新時(shí)間:2022年04月02日 08:29:47   作者:渴望力量的哈士奇  
這篇文章我們將來(lái)學(xué)習(xí)一下,Python中的三個(gè)高級(jí)函數(shù):filter()、map()、reduce(),這三個(gè)函數(shù)也被稱(chēng)為魔法函數(shù),感興趣的小伙伴可以了解一下

今天的這一章節(jié)我們來(lái)學(xué)習(xí)一下,Python 中的三個(gè)高級(jí)函數(shù),也被稱(chēng)之為 魔法函數(shù)。之所以把他們交的這么高級(jí),主要是因?yàn)樗鼈兎祷氐臄?shù)據(jù)類(lèi)型多數(shù)是 迭代器。

我們?cè)谏弦徽鹿?jié)有介紹過(guò),迭代器 可以提升我們的代碼的執(zhí)行效率、降低內(nèi)存消耗。所以接下來(lái)我們就認(rèn)識(shí)一下這些 魔法函數(shù)。

filter() 函數(shù)

filter() 函數(shù) 是python的一個(gè)內(nèi)置函數(shù)。

filter() 函數(shù)的功能:可以將一個(gè)可遍歷的對(duì)象根據(jù)過(guò)濾條件,生成一個(gè)迭代器。(在python2.7版本,返回的是列表)

filter() 函數(shù)的使用方法:

用法:

filter(function, list)

參數(shù)介紹:

function:對(duì)list的每個(gè)item進(jìn)行條件過(guò)濾的定義(主要對(duì)第二參數(shù)的每個(gè)成員進(jìn)行判斷,滿(mǎn)足函數(shù)的要求,將會(huì)進(jìn)入 filter 生成的迭代器)

list:需要過(guò)濾的列表 (其實(shí)這里不一定只可以放列表,放入的是可迭代對(duì)象)

演示案例如下(過(guò)濾出列表中的所有偶數(shù)):

def is_even(n):
    return n % 2 == 0


newlist = filter(is_even, [1, 2, 3, 4, 5, 6])
print(newlist, type(newlist))

# >>> 執(zhí)行結(jié)果如下:
# >>> <filter object at 0x7fb241492310> <class 'filter'>

for i in newlist:
    print(i)

# >>> 執(zhí)行結(jié)果如下:
# >>> 2
# >>> 4
# >>> 6

PS:需要注意的是,這里的非偶數(shù),雖然會(huì)被過(guò)濾函數(shù)拋棄,但是依然會(huì)存在于之前的列表中。

map() 函數(shù)

map() 函數(shù) 是python的一個(gè)內(nèi)置函數(shù)。

map() 函數(shù)的功能:對(duì)列表中的每一個(gè)成員依次執(zhí)行函數(shù)進(jìn)行判斷,將執(zhí)行的結(jié)果放到新 list 中,返回一個(gè) map 對(duì)應(yīng)的對(duì)象。

map() 函數(shù)的使用方法:

用法:

map(function, list)

參數(shù)介紹:

function:對(duì) list 每個(gè) item 進(jìn)行條件滿(mǎn)足的判斷

list:需要過(guò)濾的列表 (其實(shí)這里不一定只可以放列表,放入的是可迭代對(duì)象)

演示案例如下(對(duì)列表中的每一個(gè)成員判斷是否大于1):

result = map(lambda x: x>1, [0, 1, 2, 3])

print(result, type(result))

# >>> 執(zhí)行結(jié)果如下:
# >>> <map object at 0x7facfa399e80> <class 'map'>

for i in result:
    print(i)
    
# >>> 執(zhí)行結(jié)果如下:
# >>> False
# >>> False
# >>> True
# >>> True

reduce() 函數(shù)

reduce() 函數(shù) 以前是python的一個(gè)內(nèi)置函數(shù),現(xiàn)在不是了。(在python 2.x版本的時(shí)候,reduce() 函數(shù)可以直接被調(diào)用;但是在 python 3.x 的版本中,由于返回的不是一個(gè)迭代器,所以需要先執(zhí)行導(dǎo)入然后才可以繼續(xù)使用。導(dǎo)入語(yǔ)句 from functools import reduce)

reduce() 函數(shù) 的功能:對(duì)循環(huán)前后的兩個(gè)數(shù)據(jù)進(jìn)行累加或者累乘。(實(shí)際上可以通過(guò) lambda 對(duì)這兩個(gè)成員進(jìn)行任何的處理)

reduce() 函數(shù)的使用方法:

用法:

reduce(function, list)

參數(shù)介紹:

function:對(duì)數(shù)據(jù)累加/累成的函數(shù)

list:需要過(guò)濾的列表 (其實(shí)這里不一定只可以放列表,放入的是可迭代對(duì)象)

演示案例如下(對(duì)循環(huán)前后的兩個(gè)數(shù)據(jù)進(jìn)行累加或者累乘):

from functools import reduce

result = reduce(lambda x, y: x + y, [1, 2, 3])

print(result, '---', type(result))

# >>> 執(zhí)行結(jié)果如下:
# >>> 6 --- <class 'int'>


from functools import reduce


result = reduce(lambda x, y: x * y, [1, 3, 5])

print(result, '---', type(result))

# >>> 執(zhí)行結(jié)果如下:
# >>> 15 --- <class 'int'>

filter() 函數(shù) 小實(shí)戰(zhàn)

scores = [("張三", 89, 90, 59),
          ("李四", 99, 49, 59),
          ("趙五", 99, 60, 20),
          ("王二麻子", 40, 94, 59),
          ("李雷", 89, 90, 59),
          ("李莉", 89, 90, 69),
          ("楚浠", 79, 90, 59),
          ("Neo", 85, 90, 59),
          ("Abby", 89, 91, 90)]

def handle_filter(a):
    s = sorted(a[1:])   # 對(duì)三科成績(jī)進(jìn)行排序
    
    # 有 2 科成績(jī)?cè)?80 分以上,并且有 1 科在 60 分以下的
    if s[-2] > 80 and s[0] < 60:
        return True
    
    # 有 1 科成績(jī)?cè)?90 分以上,另外 2 科成績(jī)都在 60 分以下
    if s[-1] > 90 and s[1] < 60:
        return True
    if s[-2] > 80 and sum(s)/len(s) < 60:
    
    # 有 1 科成績(jī)?cè)?90 分以上, 且 3 科的平均分在 70 分以下
        return True
    return False


newIter = list(filter(handle_filter, scores))
print(newIter)

# >>> 執(zhí)行結(jié)果如下:
# >>> [('張三', 89, 90, 59), ('李四', 99, 49, 59), ('王二麻子', 40, 94, 59), ('李雷', 89, 90, 59), ('Neo', 85, 90, 59)]

到此這篇關(guān)于Python學(xué)習(xí)之魔法函數(shù)(filter,map,reduce)詳解的文章就介紹到這了,更多相關(guān)Python filter() map() reduce()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中Json和其他類(lèi)型相互轉(zhuǎn)換的實(shí)現(xiàn)示例

    Python中Json和其他類(lèi)型相互轉(zhuǎn)換的實(shí)現(xiàn)示例

    本文介紹了在Python中使用json模塊實(shí)現(xiàn)json數(shù)據(jù)與dict、object之間的高效轉(zhuǎn)換,包括loads(), load(), dumps(), dump()方法,以及文件讀寫(xiě)操作,感興趣的可以了解一下
    2025-08-08
  • Python實(shí)現(xiàn)向好友發(fā)送微信消息

    Python實(shí)現(xiàn)向好友發(fā)送微信消息

    利用python可以實(shí)現(xiàn)微信消息發(fā)送功能,怎么實(shí)現(xiàn)呢?你肯定會(huì)想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過(guò)本文給大家分享使用?Python?實(shí)現(xiàn)微信消息發(fā)送的思路代碼,一起看看吧
    2022-06-06
  • python中字典的常見(jiàn)操作總結(jié)1

    python中字典的常見(jiàn)操作總結(jié)1

    這篇文章主要介紹了python中字典的常見(jiàn)操作總結(jié),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • python3 面向?qū)ο骭_類(lèi)的內(nèi)置屬性與方法的實(shí)例代碼

    python3 面向?qū)ο骭_類(lèi)的內(nèi)置屬性與方法的實(shí)例代碼

    這篇文章主要介紹了python3 面向?qū)ο骭_類(lèi)的內(nèi)置屬性與方法的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法

    使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法

    今天小編就為大家分享一篇使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 編寫(xiě)Python CGI腳本的教程

    編寫(xiě)Python CGI腳本的教程

    這篇文章主要介紹了編寫(xiě)Python CGI腳本的教程,CGI是Python和服務(wù)器軟件連接的接口,需要的朋友可以參考下
    2015-06-06
  • 跟老齊學(xué)Python之關(guān)于循環(huán)的小伎倆

    跟老齊學(xué)Python之關(guān)于循環(huán)的小伎倆

    不管是while還是for,所發(fā)起的循環(huán),在python編程中是經(jīng)常被用到的。特別是for,一般認(rèn)為,它要比while快,而且也容易寫(xiě)(是否容易,可能因人而異,但是,執(zhí)行時(shí)間快,是的確的),因此在實(shí)踐中,for用的比較多點(diǎn)。
    2014-10-10
  • Python生成隨機(jī)密碼

    Python生成隨機(jī)密碼

    這篇文章主要介紹了Python生成隨機(jī)密碼的代碼分享,由于是新手,僅僅是簡(jiǎn)單的實(shí)現(xiàn),未作任何其他處理,小伙伴們自己參考下吧。
    2015-03-03
  • python 內(nèi)置函數(shù)filter

    python 內(nèi)置函數(shù)filter

    這篇文章主要介紹了python 內(nèi)置函數(shù)filter的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Python+PyQt5實(shí)現(xiàn)自制pdf工具箱

    Python+PyQt5實(shí)現(xiàn)自制pdf工具箱

    這篇文章主要為大家詳細(xì)介紹了Python如何利用PyQt5自制pdf工具箱,可以實(shí)現(xiàn)合并拆分和刪除指定pdf頁(yè)面,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評(píng)論

大新县| 外汇| 甘谷县| 郑州市| 和政县| 威宁| 稻城县| 龙里县| 水富县| 泰州市| 西乌珠穆沁旗| 全南县| 柳河县| 通化县| 永平县| 潼南县| 聊城市| 察哈| 柞水县| 当雄县| 定安县| 普兰店市| 阿拉善右旗| 友谊县| 台东市| 得荣县| 文安县| 江油市| 新竹市| 光泽县| 囊谦县| 汉寿县| 翼城县| 安福县| 大荔县| 明溪县| 临夏市| 南城县| 德钦县| 南华县| 德化县|