在Python中,map() 和 filter() 是兩個強大的內建函數,經常與匿名函數(如 lambda)或其他可重用的函數一起使用。這兩個函數主要用於處理可迭代對象(如列表、元組等)以便進行映射或過濾操作。
map() 函數map() 函數將一個函數應用到一個可迭代對象(如列表)的每一個元素上,並返回一個新的可迭代對象(如列表、元組、生成器等),包含應用該函數後的結果。
map(function, iterable)
function:要應用的函數,可以是已定義的函數或 lambda 函數。iterable:可迭代對象,例如列表、元組、字符串等。numbers = [1, 2, 3, 4, 5]
# 使用 lambda 函數計算每個數的平方
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(f"平方後的數字列表: {squared_numbers}")
這段代碼使用 map() 將匿名 lambda 函數應用到列表 numbers 中的每一個數字上,結果是 [1, 4, 9, 16, 25]。
map() 也可以同時作用於多個可迭代對象,前提是這些可迭代對象的長度相同。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# 使用 lambda 函數將兩個列表中的元素相加
summed_list = list(map(lambda x, y: x + y, list1, list2))
print(f"兩個列表相加後的結果: {summed_list}")
結果會是 [5, 7, 9],即將 list1 和 list2 中的對應元素相加。
filter() 函數filter() 函數用來過濾可迭代對象中的元素,根據一個指定的函數來判斷元素是否符合條件。返回的結果是一個包含符合條件的元素的可迭代對象。
filter(function, iterable)
function:判斷條件的函數,該函數返回布爾值(True 或 False)。iterable:可迭代對象,範圍可以是列表、元組等。numbers = [1, 2, 3, 4, 5, 6]
# 使用 lambda 函數過濾出偶數
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶數列表: {even_numbers}")
這裡 filter() 用來過濾出 numbers 列表中的偶數,結果是 [2, 4, 6]。
words = ["apple", "banana", "kiwi", "pear"]
# 使用 lambda 函數過濾出長度大於3的單詞
long_words = list(filter(lambda x: len(x) > 3, words))
print(f"長度大於3的單詞: {long_words}")
這裡 filter() 會篩選出長度大於 3 的單詞,結果是 ['apple', 'banana', 'pear']。
map() 與 filter() 的區別map():將指定的函數應用到可迭代對象的每一個元素上,返回應用後的結果。filter():根據指定的函數過濾出符合條件的元素,返回符合條件的元素。map() 與 filter() 的區別示例map() 將數字平方:numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # [1, 4, 9, 16, 25]
filter() 過濾出偶數:even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4]