什么是Python中的map,reduce和filter?
生活随笔
收集整理的這篇文章主要介紹了
什么是Python中的map,reduce和filter?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本上,lambdas以及map,reduce和filter為python提供了函數式編程能力。讓我們看看他們是什么。
- map: map函數采用 iterable(list,tuple,set)并將函數應用于列表中的每個元素。讓我們看一個例子來看看它是如何工作的。
任務1:給定一個整數列表,編寫代碼,以方的所有數s在列表中。
def func (num ):“””對給定數字進行平方的函數“””return num * numl = [1, 2, 3, 4, 5, 6] #map采用一個函數并應用于 #列表中的每個元素 ans = list (map (func ,l ))#[1,4,9,16,25,36] print(ans)上面的代碼工作并執行我們想要實現的內容,但我們可以使用lambda函數以更簡潔的方式編寫它,而不是創建單獨的函數。讓我們稍微改變一下代碼,使其更簡潔。
l = [1, 2, 3, 4, 5, 6] #[1,4,9,16,25,36] ans = list (map (lambda x :x * x ,l )) print(ans)任務2:給定一個整數列表,編寫一個代碼來均數偶數,但將奇數數字排成一行。這里我們可以一起使用map和lambda,如下所示
l = [1, 2, 3, 4, 5, 6] ans = list(map(lambda x: x ** 2 if x % 2 == 0 else x ** 3, l)) print(ans)這總結了地圖的基本工作。我們來看看過濾器
- filter:它的工作原理類似于map函數。顧名思義,它用于根據特定條件過濾元素。不同之處在于它從列表中的元素創建滿足某些條件的新列表。讓我們看看它如何與一個例子一起工作。這些參數類似于地圖的參數。它需要一個謂詞函數和一個可迭代函數。
任務3:給定一個整數列表,編寫一個代碼,僅從列表中分隔偶數。
l = [1, 2, 3, 4, 5, 6]#只保留滿足謂詞功能的列表元素 ans = list(filter(lambda x: x % 2 == 0, l))# [2, 4, 6] print(ans)- reduce:它繼續在列表中應用函數,直到它返回單個值。讓我們通過一個例子來看看reduce的工作
任務4:給定一個整數列表,編寫一個代碼,返回通過乘以列表中的元素獲得的總值。
from functools import reducel = [1, 2, 3, 4, 5, 6] ans = reduce(lambda x, y: x * y, l) print(ans)筆記:
map和 filter返回一個map對象,而 reduce返回一個值。
我們必須從functools導入reduce,但map和filter可直接在builtins中使用
總結
以上是生活随笔為你收集整理的什么是Python中的map,reduce和filter?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 它身上的飞秋 战衣给他添上了英武的气势
- 下一篇: 蚊子132 各方人员都“照顾”到位则业务