Python - 篩選所有元素均為偶數的元組


問題陳述使我們能夠確定所需字串在列表中的位置,這對於各種目的都很有用,例如訪問或操作該特定索引處的元素。在 Python 中,我們有一些內建函式,例如 reduce()、str()、filter()、lambda 和 all(),這些函式將用於查詢列表中包含字串的索引。

語法

以下語法在示例中使用:

reduce()

此函式在 functools 模組下定義。

str()

這是 Python 中的一種內建方法,可以將指定值轉換為字串。

filter() 

當我們根據特定條件篩選專案時,將應用 filter() 方法。簡單來說,它允許使用者迭代那些滿足條件的提取元素。

lambda

lambda 函式提供了一種使用 lambda 關鍵字宣告簡短匿名函式的快捷方式。lambda 函式的行為與使用 def 關鍵字表達時相同。

all()

這是 Python 中的內建方法,它接受可迭代物件,例如列表、字典、元組等。

使用列表推導和 all() 方法

該程式使用列表推導方法,該方法在一行中定義迴圈和條件表示式的組合,並且還包括 all() 方法。

示例

在下面的示例中,程式從變數 tuple_list 中的輸入元組列表開始。然後使用列表推導技術,使用模運算子 % 和 == 運算子以及 for 迴圈和 if 語句,為偶數設定條件。最後,我們藉助變數result列印輸出。

tuple_list = [(61, 14, 12, 18), (52, 61, 73, 69), (80, 111, 211),(2,4)]
result = [tup for tup in tuple_list if all(ele % 2 == 0 for ele in tup)]
print("After Filteration of all the tuple:",result)

輸出

After Filteration of all the tuple: [(2, 4)]

使用遞迴

該程式使用遞迴,該遞迴由函式自身呼叫函式來定義。在函式內部,它將使用名為 len() 的內建方法和切片來過濾所有元素均為偶數的元組。

示例

在下面的示例中,程式中的函式getEvenValTupleRec()定義了一個新的元組,該元組具有輸入元組中偶數索引處的元素,並返回一個包含相同專案的新的元組。透過使用輸入元組的切片版本呼叫自身,該函式使用遞迴來實現此目的。然後,程式在變數myTuple中建立一個元組,顯示它,並使用 myTuple 作為引數執行 getEvenValTupleRec() 函式以返回偶數索引的元素。然後程式列印結果。

def getEvenValTupleRec(myTuple):
    if len(myTuple) == 0 or len(myTuple) == 1:
        return ()
    return (myTuple[0], ) + getEvenValTupleRec(myTuple[2:])
# Create tuple and print the tuple
myTuple = (4, 1, 6, 8, 3, 7)
print("The Given String:", str(myTuple))
# Access the even index in Tuple
evenTuple = getEvenValTupleRec(myTuple)
# Printing even indexed tuple
print("All even indexed elements of the tuple:", str(evenTuple))

輸出

The Given String: (4, 1, 6, 8, 3, 7)
All even indexed elements of the tuple: (4, 6, 3)

使用 filter() 和 lambda

該程式使用名為 filter 的方法從列表中刪除非偶數元素元組,並使用 lambda 計算偶數的條件。

所需安裝

pip install functools

以上是系統上執行此問題陳述所需的安裝命令。

示例

在下面的示例中,程式從名為 functools 的模組開始,該模組提供一個高階內建函式,該函式將過濾具有偶數元素的元組。然後在變數 tuple_list 中建立輸入字串元組列表。然後列印相同內容以獲取原始列表。接下來,使用 reduce() 和 lambda 函式過濾所有元素均為偶數的元組,作為 list() 的引數,並將其儲存在變數 result 中。最後,我們藉助變數 result 列印輸出。

# import functools module
import functools
tuple_list = [(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)]
# printing original list
print("The original list is : " , str(tuple_list))
# Use reduce() and a lambda function 
result = list(filter(lambda t: functools.reduce(
	lambda x, y: x and (y % 2 == 0), t, True), tuple_list))
# print results
print("Filtered Tuples : " , str(result))

輸出

The original list is : [(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)]
Filtered Tuples : [(6, 4, 2, 8), (8, 0, 2)]

結論

我們討論瞭解決問題陳述的各種方法。這種方法很有用,因為它允許我們執行諸如根據內容訪問或更新單個元素、確定特定字串的出現或頻率或基於所需字串在列表中的位置建立條件邏輯等操作。

更新於:2023年8月17日

瀏覽量:198

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.