Python中的Map、Reduce和Filter函數語言程式設計
構成函數語言程式設計正規化核心的三個關鍵函式是 Map、Filter 和 Reduce。
Map
在 map 函式中,您作為引數傳遞的函式將應用於可迭代物件。
如果您熟悉列表推導式,Map 函式也有類似的效果。當我們需要同時在各種元素上對映或實現功能時,我們會使用它。
map 函式採用以下引數:
map(function, iterable object)
- 函式function:可以是使用者定義的函式或 lambda 函式。Lambda 是一個匿名函式,可以接受多個引數。它們只能有一種表達方式。
- 可迭代物件 iterable object:字串、元組、列表、集合、字典等物件
假設我們有一個名為 FirstName 的列表,其中包含所有員工的名字,我們還有另一個列表,其中包含所有員工的姓氏。所需的輸出是顯示全名。您可以使用 for 迴圈來實現這一點,但這需要多行程式碼並且很乏味。Map 函式允許我們用一行程式碼來實現這一點。
first_name = ["Keith", "Elizabeth","Alex","William"] last_name = ["Philip","Brown","Smith","Oliver"] name = list(map(lambda x, y:x+ " "+y, first_name, last_name)) |
再舉一個例子,我們想找到一個所有數字的立方體。我們也可以透過傳遞一個函式作為引數來實現。
讓我們首先建立一個函式,它返回一個輸入的立方體
def cube(x): return x**3 arr_num = [1,3,5,7,9] cube_values = list(map(cube, arr_num)) print(cube_values) |
Filter
'Filter' 的行為類似於 map 函式,但還需要該函式查詢條件,該條件是布林值。然後過濾器從可迭代物件中返回滿足條件的元素。本質上,它過濾掉不滿足布林邏輯的物件。
讓我們看看如何使用過濾器函式來過濾名字以“h”結尾的員工
names = list(filter(lambda x: ( x[-1]=='h'),first_name)) print(names) |
Reduce
'Reduce' 對可迭代物件啟用成對操作。它使用傳遞函式中定義的每個操作的結果,以及每個連續元素。這會減少 pyton 將應用該函式的專案總數,直到只剩下一個最終值。
在我們檢視reduce函式的引數之前,需要注意的是reduce必須從python的functools庫中匯入
這是匯入的命令
from functools import reduce
我們有一個數字列表,我們想找到最大的數字。
arr_num = [110,569, 784, 377, 900, 126] large_num = reduce(lambda x, y: x if x>y else y, arr_num) print(largest_num) |
相關文章
- Java中的函數語言程式設計(七)流Stream的Map-Reduce操作Java函數程式設計
- Java函數語言程式設計中歸約reduce()的使用教程Java函數程式設計
- python之高階函式map,reduce,filter用法Python函式Filter
- python函數語言程式設計Python函數程式設計
- python函數語言程式設計一Python函數程式設計
- python函數語言程式設計二Python函數程式設計
- python-python的sao操作 map reduce filterPythonFilter
- JavaScript中的函數語言程式設計JavaScript函數程式設計
- Python函數語言程式設計術語大全Python函數程式設計
- python常用函式進階(2)之map,filter,reduce,zipPython函式Filter
- python函數語言程式設計詳解Python函數程式設計
- python是函數語言程式設計嗎Python函數程式設計
- Python 函數語言程式設計 – 高階函式Python函數程式設計函式
- Python函數語言程式設計自帶函式Python函數程式設計函式
- javascript高階函式---filter---map---reduceJavaScript函式Filter
- JavaScript(1)高階函式filter、map、reduceJavaScript函式Filter
- Java 中的資料流和函數語言程式設計Java函數程式設計
- Js中函數語言程式設計的理解JS函數程式設計
- 函數語言程式設計函數程式設計
- python中快速處理關鍵字map,reduce,filterPythonFilter
- 人人都能學會的python程式設計教程16:map和reducePython程式設計
- 陣列的 map, filter ,sort和 reduce 用法陣列Filter
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- Python函數語言程式設計系列002:水管模型和composePython函數程式設計模型
- Python學習之函數語言程式設計Python函數程式設計
- RAC的函數語言程式設計函數程式設計
- 理解Swift高階函式之map, filter, reduceSwift函式Filter
- 【譯】JavaScript 中的函數語言程式設計原理JavaScript函數程式設計
- Python學習筆記 - filter,map,reduce,zipPython筆記Filter
- 函數語言程式設計,真香函數程式設計
- javascript函數語言程式設計JavaScript函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- Java 函數語言程式設計Java函數程式設計
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- Python函數語言程式設計系列008:可測Python函數程式設計
- Python函數語言程式設計系列007:惰性求值Python函數程式設計
- JavaScript 中的函數語言程式設計:函式,組合和柯里化JavaScript函數程式設計函式
- 在幕後看看Swift中的Map,Filter和Reduce的實現SwiftFilter