了解Python中的filter()函數

Python中的filter()函數是一個非常有用的函數,它可以用來過濾序列中的元素,並返回一個由符合條件的元素組成的新序列。它接受兩個參數,一個是函數,一個是序列,序列的每個元素都按照函數來檢查,然後返回一個由符合條件的元素組成的新序列。

舉個例子來說明,假設我們有一個序列,裡面有一些數字,我們想要從中篩選出所有大於0的數字,我們可以使用filter()函數來實現:

def is_positive(x):
    return x > 0

nums = [-3, -2, 0, 1, 2, 3]

positive_nums = filter(is_positive, nums)

print(list(positive_nums))
# [1, 2, 3]

在上面的程式碼中,我們定義了一個函數is_positive,它接受一個參數x,並返回一個布爾值,表示x是否大於0。然後我們定義了一個序列nums,裡面有一些數字,包括正數和負數。接下來,我們使用filter()函數來過濾序列nums,只保留大於0的數字,最後我們將結果轉換為一個列表,並打印出來,結果為[1, 2, 3]。

另外,filter()函數也可以用於字符串,例如,我們可以使用它來篩選出字符串中的大寫字母:

def is_upper(c):
    return c.isupper()

s = 'Hello World'

upper_chars = filter(is_upper, s)

print(list(upper_chars))
# ['H', 'W']

在上面的程式碼中,我們定義了一個函數is_upper,它接受一個參數c,並返回一個布爾值,表示c是否是大寫字母。然後我們定義了一個字符串s,接下來,我們使用filter()函數來過濾字符串s,只保留大寫字母,最後我們將結果轉換為一個列表,並打印出來,結果為[‘H’, ‘W’]。

總結來說,Python中的filter()函數是一個非常有用的函數,它可以用來過濾序列中的元素,並返回一個由符合條件的元素組成的新序列。它可以用於數字序列,也可以用於字符串,只要提供一個函數,就可以根據函數的返回值來篩選序列中的元素。

Categorized in:

Tagged in: