Python 中的 filter() 方法和 Lambda 函式

Vaibhav Vaibhav 2022年5月17日
Python 中的 filter() 方法和 Lambda 函式

通常,在處理陣列、列表和元組等可迭代資料結構時,我們必須對它們執行過濾操作。

過濾是指取出與特定條件匹配的值。可以通過使用 for 迴圈或 while 迴圈迭代可迭代資料結構值和值並檢查元素是否滿足條件來執行過濾。

由於這是一項常見任務,Python 程式語言有一個內建方法 filter()。這種方法需要一個函式來執行過濾。

一般來說,lambda 方法被考慮用於這項工作,因為它們易於編寫。本文將展示如何在 Python 中同時使用 filter() 方法和 lambda 函式。

Python 中的 filter() 方法和 lambda 函式

filter 方法是 Python 程式語言中的內建方法,用於從滿足特定條件的迭代中過濾元素。函式表示條件,函式返回 True 的值將被考慮在結果中。

filter() 接受兩個引數;一個用於過濾的函式,它返回一個布林值和一個可迭代的物件,例如列表或元組。filter() 方法是一個迭代器或 filter 物件。

我們必須使用 list() 方法或 tuple() 方法將迭代器轉換為列表或元組。Python 中的 lambda 函式是行內函數和匿名函式。

這些函式可以與 filter 方法一起使用。

lambda 函式具有以下語法。

lambda <parameters> : <expression>

引數應以逗號分隔,並且表示式應返回布林結果(TrueFalse)。

讓我們通過一個簡單的示例來了解如何將兩者結合使用。請參閱以下 Python 程式碼。

array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x : x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)

輸出:

Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 4, 15, 7, 8, 10]

上面的 Python 程式碼過濾了整數列表 array 中小於或等於 20 的所有值。

列表的每個值都傳遞給 lambda 函式。如果它返回 True,則將該值新增到結果中;否則,不是。

一旦在迭代器中獲得結果,就會使用內建的 list() 方法將其轉換為列表。最後,兩個陣列都列印到控制檯。

例子

以下是一些示例,以瞭解 filter() 方法和 lambda 函式的用法。

從整數列表中過濾所有偶數

array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x : x % 2 == 0, array))
print("Old Array:", array)
print("New Array:", new_array)

輸出:

Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [2, 4, 66, 88, 100]

從整數列表中過濾所有奇數

array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x : x % 2 == 1, array))
print("Old Array:", array)
print("New Array:", new_array)

輸出:

Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [1, 3, 5, 77, 99]

從字串列表中過濾所有長度為 5 的字串

array = ["hello", "python", "world", "walking", "sleep", "shelter", "food", ]
new_array = list(filter(lambda x : len(x) == 5, array))
print("Old Array:", array)
print("New Array:", new_array)

輸出:

Old Array: ['hello', 'python', 'world', 'walking', 'sleep', 'shelter', 'food']
New Array: ['hello', 'world', 'sleep']

從整數列表中過濾 [10, 20] 範圍內的所有數字

array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x : 10 <= x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)

輸出:

Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 15, 10]
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Python Function

相關文章 - Python Lambda