簡單了解python filter、map、reduce的區別

Python是一門高級編程語言 , 擁有豐富的內置函數和標準庫 , 其中filter、map和reduce是三個常用的函數 。它們都可以對序列進行處理 , 但在具體的應用場景中 , 它們各自有不同的特點和用途 。一、filter
filter函數用于過濾序列中的元素 , 返回一個新的序列 , 它只保留滿足條件的元素 。filter函數的語法如下:

簡單了解python filter、map、reduce的區別


filter(function, sequence)
其中 , function是一個判斷函數 , 用于對sequence中的每個元素進行判斷 , 如果返回True , 則保留該元素 , 否則刪除 。
例如 , 我們定義一個函數用于判斷一個數是否為偶數:
def is_even(n):
return n % 2 == 0
然后使用filter函數對一個序列進行過濾:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(is_even, nums))
print(evens)
輸出結果為[2, 4, 6, 8, 10] , 即只保留了偶數 。
二、map
map函數用于對序列中的每個元素進行操作 , 返回一個新的序列 。它的語法如下:
map(function, sequence)
其中 , function是一個操作函數 , 用于對sequence中的每個元素進行操作 , 返回一個新的值 。
例如 , 我們定義一個函數用于將一個數平方:
def square(n):
return n ** 2
然后使用map函數對一個序列進行操作:
nums = [1, 2, 3, 4, 5]
squares = list(map(square, nums))
print(squares)
輸出結果為[1, 4, 9, 16, 25] , 即對每個數進行了平方操作 。
三、reduce
reduce函數用于對序列中的元素進行累積操作 , 返回一個單一的值 。它的語法如下:
reduce(function, sequence)
其中 , function是一個操作函數 , 用于對sequence中的每個元素進行累積操作 , 返回一個新的值 。
例如 , 我們定義一個函數用于對一個序列進行求和:
from functools import reduce
def add(x, y):
return x + y
nums = [1, 2, 3, 4, 5]
sum = reduce(add, nums)
print(sum)
輸出結果為15 , 即對序列中的所有元素進行了求和操作 。
四、區別與聯系
從使用方式上來說 , filter、map和reduce都是函數式編程中常見的操作 , 用于對序列進行處理 。它們都接受一個操作函數和一個序列作為參數 , 但它們的返回值有所不同 。
filter返回一個新的序列 , 其中只保留滿足條件的元素 。
map返回一個新的序列 , 其中每個元素都被操作函數處理過 。
reduce返回一個單一的值 , 其中對序列中的元素進行了累積操作 。
從應用場景上來說 , filter常用于過濾序列中的元素 , 例如篩選出偶數、篩選出大于10的數等 。
map常用于對序列中的元素進行操作 , 例如對每個數進行平方、對每個字符串進行大寫操作等 。
reduce常用于對序列中的元素進行累積操作 , 例如對一個序列進行求和、求最大值等 。
【簡單了解python filter、map、reduce的區別】在實際的編程中 , 我們常常會將filter、map和reduce進行組合使用 , 從而實現更加復雜的操作 。例如 , 我們可以先使用filter對序列進行過濾 , 然后使用map對過濾后的序列進行操作 , 最后使用reduce對操作后的序列進行累積 。

    猜你喜歡