在Python中飒责,map()
是一個內(nèi)置函數(shù),用于對可迭代對象中的每個元素應用一個指定的函數(shù),并返回一個包含結(jié)果的新的可迭代對象席里。
map()
函數(shù)的語法如下:
map(function, iterable)
其中,function
是一個作用于可迭代對象中每個元素的函數(shù)拢驾,iterable
是一個可迭代對象奖磁,可以是列表、元組繁疤、集合等咖为。
map()
函數(shù)的工作原理如下:
- 對可迭代對象中的每個元素,依次調(diào)用
function
函數(shù)稠腊,并將該元素作為參數(shù)傳遞給函數(shù)躁染。 - 將
function
函數(shù)的返回值收集起來,并返回一個新的可迭代對象架忌,其中包含所有元素經(jīng)過function
函數(shù)處理后的結(jié)果吞彤。
以下示例演示了map()
函數(shù)的用法:
# 對列表中的每個元素求平方
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))
>>> [1, 4, 9, 16, 25]
# 將字符串列表中的每個字符串轉(zhuǎn)換為大寫
words = ["apple", "banana", "car"]
uppercase_words = map(str.upper, words)
print(list(uppercase_words))
>>> ['APPLE', 'BANANA', 'CAR']
在上述示例中,我們使用了匿名函數(shù)(lambda函數(shù))和str.upper
函數(shù)作為function
參數(shù)來對元素進行處理叹放。您也可以使用自定義函數(shù)來替代匿名函數(shù)饰恕。
需要注意的是,map()
函數(shù)返回的結(jié)果是一個迭代器(在Python 3中)井仰,若需要使用列表或其他容器類型懂盐,可以通過將返回值轉(zhuǎn)換為列表來實現(xiàn),如list(map(...))
糕档。
另外莉恼,如果傳入給map()
函數(shù)的可迭代對象的長度不一致拌喉,map()
函數(shù)會在最短的可迭代對象用完后停止迭代。
numbers = [1, 2, 3]
letters = ['a', 'b']
result = map(lambda x, y: str(x) + y, numbers, letters)
print(list(result))
>>> ['1a', '2b']
在上述示例中俐银,numbers
和letters
的長度不同尿背,但map()
函數(shù)僅迭代兩個可迭代對象共同的部分,即[1, 2]
和['a', 'b']
捶惜,并將結(jié)果依次返回田藐。