欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

今天的這一章節(jié)我們來學(xué)習(xí)一下,Python 中的三個高級函數(shù),也被稱之為 魔法函數(shù)。之所以把他們交的這么高級,主要是因為它們返回的數(shù)據(jù)類型多數(shù)是 迭代器。

我們在上一章節(jié)有介紹過,迭代器 可以提升我們的代碼的執(zhí)行效率、降低內(nèi)存消耗。所以接下來我們就認(rèn)識一下這些 魔法函數(shù)。

filter() 函數(shù)

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

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

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

用法:

filter(function, list)

參數(shù)介紹:

function:對list的每個item進行條件過濾的定義(主要對第二參數(shù)的每個成員進行判斷,滿足函數(shù)的要求,將會進入 filter 生成的迭代器)

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

演示案例如下(過濾出列表中的所有偶數(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ù),雖然會被過濾函數(shù)拋棄,但是依然會存在于之前的列表中。

map() 函數(shù)

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

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

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

用法:

map(function, list)

參數(shù)介紹:

function:對 list 每個 item 進行條件滿足的判斷

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

演示案例如下(對列表中的每一個成員判斷是否大于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的一個內(nèi)置函數(shù),現(xiàn)在不是了。(在python 2.x版本的時候,reduce() 函數(shù)可以直接被調(diào)用;但是在 python 3.x 的版本中,由于返回的不是一個迭代器,所以需要先執(zhí)行導(dǎo)入然后才可以繼續(xù)使用。導(dǎo)入語句 from functools import reduce)

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

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

用法:

reduce(function, list)

參數(shù)介紹:

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

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

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

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ù) 小實戰(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:])   # 對三科成績進行排序
    
    # 有 2 科成績在 80 分以上,并且有 1 科在 60 分以下的
    if s[-2] > 80 and s[0] < 60:
        return True
    
    # 有 1 科成績在 90 分以上,另外 2 科成績都在 60 分以下
    if s[-1] > 90 and s[1] < 60:
        return True
    if s[-2] > 80 and sum(s)/len(s) < 60:
    
    # 有 1 科成績在 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息

    python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息

    這篇文章主要介紹了python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息示例,需要的朋友可以參考下
    2014-04-04
  • 解決Python plt.savefig 保存圖片時一片空白的問題

    解決Python plt.savefig 保存圖片時一片空白的問題

    今天小編就為大家分享一篇解決Python plt.savefig 保存圖片時一片空白的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 10分鐘用Python快速搭建全文搜索引擎詳解流程

    10分鐘用Python快速搭建全文搜索引擎詳解流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章帶你用python花10分鐘迅速搭建一個好玩的Python全文搜索引擎,大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片)

    python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片)

    本文主要介紹了python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python使用turtle模塊繪制愛心圖案

    Python使用turtle模塊繪制愛心圖案

    這篇文章主要為大家詳細(xì)介紹了Python使用turtle模塊繪制愛心圖案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python繪制交通流折線圖詳情

    Python繪制交通流折線圖詳情

    這篇文章主要介紹了Python繪制交通流折線圖詳情,文章基于python的相關(guān)資料展開折線圖繪制的實現(xiàn)流程,感興趣的小伙伴可以參考一下
    2022-06-06
  • python之pexpect實現(xiàn)自動交互的例子

    python之pexpect實現(xiàn)自動交互的例子

    今天小編就為大家分享一篇python之pexpect實現(xiàn)自動交互的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python transpose()處理高維度數(shù)組的軸變換的實現(xiàn)

    python transpose()處理高維度數(shù)組的軸變換的實現(xiàn)

    本文主要介紹了python transpose()處理高維度數(shù)組的軸變換的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • linux系統(tǒng)下pip升級報錯的解決方法

    linux系統(tǒng)下pip升級報錯的解決方法

    這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下pip升級報錯的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python入門基礎(chǔ)之用戶輸入與模塊初認(rèn)識

    python入門基礎(chǔ)之用戶輸入與模塊初認(rèn)識

    Python的強大之處在于他有非常豐富和強大的標(biāo)準(zhǔn)庫和第三方庫,幾乎你想實現(xiàn)的任何功能都有相應(yīng)的Python庫支持。下面通過本文給大家介紹python入門基礎(chǔ)之用戶輸入與模塊初認(rèn)識,一起看看吧
    2016-11-11

最新評論