在 Python 里,map()
?是一個內置函數,其用途是將指定的函數應用于可迭代對象(像列表、元組等)的每個元素,最終返回一個新的迭代器。此迭代器所包含的元素是原可迭代對象中每個元素經過指定函數處理后的結果。map()
?函數是?Python 中非常實用的一個函數式編程工具。
基本語法
map(function, iterable, ...)
參數解釋
function
:需要應用到可迭代對象每個元素上的函數。iterable
:一個或多個可迭代對象,例如列表、元組等。
代碼示例
以下是一些關于?map()
?函數的常見使用示例:
示例 1:將列表中的每個元素都平方
# 定義一個函數,用于計算一個數的平方
def square(x):return x ** 2# 定義一個列表
numbers = [1, 2, 3, 4, 5]# 使用 map 函數將 square 函數應用到 numbers 列表的每個元素上
result = map(square, numbers)# 將結果轉換為列表并打印
print(list(result))
示例 2:將多個列表對應位置的元素相加
# 定義一個函數,用于將兩個數相加
def add(x, y):return x + y# 定義兩個列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]# 使用 map 函數將 add 函數應用到 list1 和 list2 對應位置的元素上
result = map(add, list1, list2)# 將結果轉換為列表并打印
print(list(result))
示例 3:使用 lambda 函數
# 定義一個列表
numbers = [1, 2, 3, 4, 5]# 使用 map 函數和 lambda 函數將列表中的每個元素都乘以 2
result = map(lambda x: x * 2, numbers)# 將結果轉換為列表并打印
print(list(result))
示例 4:配合?str
,?int
,?float
?等內建函數
nums_str = ['1', '2', '3']
nums_int = list(map(int, nums_str)) # [1, 2, 3]floats = list(map(float, ['3.14', '2.71'])) # [3.14, 2.71]upper = list(map(str.upper, ['a', 'b', 'c'])) # ['A', 'B', 'C']
示例 5:配合?itemgetter
,?lambda
,?filter
,?zip
?等
from operator import itemgetterdata = [(0, 'a'), (1, 'b'), (2, 'c')]
second_items = list(map(itemgetter(1), data)) # ['a', 'b', 'c']
注意事項
map()
?函數返回的是一個迭代器,所以若要查看具體結果,通常需要將其轉換為列表、元組等可直接查看的類型。- 當傳入多個可迭代對象時,
map()
?函數會以最短的可迭代對象的長度為準進行處理。