介紹如何使用 Python 的 map
函數搭配指定的函數逐一處理列表的每個元素。
套用自訂函數處理列表元素
Python 的 map
函數可以將指定的自訂函數逐一套用至列表中的每個元素,並傳回所有計算結果:
# 計算數值平方的函數 def square(x): return x ** 2 # 使用 map 函數將 square 函數套用至列表的每個元素 result = map(square, [1, 2, 3, 4, 5]) print(result)
<map object at 0x7f002d9a5748>
在 Python 3 中的 map
函數會傳回一個 map
物件,我們可以使用 for
迴圈來存取其中的值:
# 顯示結果 for i in result: print(i, end = " ")
1 4 9 16 25
或是將 map
物件轉換為列表:
# 將 map 物件轉為列表 result2 = list(map(square, [1, 2, 3, 4, 5])) print(result2)
[1, 4, 9, 16, 25]
套用 Python 內建函數
map
函數亦可搭配 Python 內建的函數:
# map 搭配 Python 內建函數 val = [2.673, 3.626, 4.225, 5.967, 9.697] rounded = list(map(round, val)) print(rounded)
[3, 4, 4, 6, 10]
字串處理
map
函數除了用來處理列表之外,亦可用來處理字串,將字串中的每個字元逐一套用指定的函數:
# 將字串轉為大寫 def toUpper(s): return s.upper() # 原始字串 mystr = "hello, world!" # 套用 toUpper 函數轉換字串 upStr = map(toUpper, mystr) for i in upStr: print(i, end = "")
HELLO, WORLD!
Lambda 函數
map
函數也可以搭配 Lambda 函數來使用,對於簡單的處理函數來說會方便很多:
# 使用 map 函數搭配 Lambda 函數 result = list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])) print(result)
[1, 4, 9, 16, 25]
套用至兩個列表
map
函數也可以將函數套用至兩個列表進行運算:
# 相加的函數 def myadd(x, y): return x + y # 使用 map 函數將 myadd 函數套用至兩個列表 result = list(map(myadd, [1, 2, 3, 4], [2, 4, 6, 8])) print(result)
[3, 6, 9, 12]