Python中的map、reduce和filter函數(shù)是如何工作的?含代碼

Python中的map、reduce和filter函數(shù)是如何工作的?

在Python中,map、reduce和filter都是非常實用的函數(shù)。愛掏網(wǎng) - it200.com它們可以讓我們更方便地對序列進行操作,提高我們的程序效率。愛掏網(wǎng) - it200.com那么這些函數(shù)是如何工作的呢?本文將為你詳細介紹。愛掏網(wǎng) - it200.com

map()函數(shù)是Python中的內(nèi)置函數(shù),它能夠根據(jù)提供的函數(shù)對序列進行映射,返回一個新的列表。愛掏網(wǎng) - it200.com它的基本語法為:

map(function, iterable, ...)

其中,function是一個函數(shù),iterable是一個可迭代對象。愛掏網(wǎng) - it200.com我們也可以將iterable進行擴展,包括多個其他的迭代器。愛掏網(wǎng) - it200.com例如:

map(function, iterable1, iterable2, ...)

下面是一個簡單的例子,將一個列表中的所有元素乘以2:

def double(x):
    return x * 2

lst = [1, 2, 3, 4, 5]
new_lst = map(double, lst)

print(list(new_lst))  # [2, 4, 6, 8, 10]

這個例子中,我們定義了一個函數(shù)double(x),將x乘以2,然后通過map()函數(shù)將這個函數(shù)應(yīng)用到lst中的所有元素上,最后返回一個新的列表。愛掏網(wǎng) - it200.com

我們也可以通過lambda表達式來實現(xiàn)這個功能:

lst = [1, 2, 3, 4, 5]
new_lst = map(lambda x: x * 2, lst)

print(list(new_lst))  # [2, 4, 6, 8, 10]

這里的lambda表達式等價于上面的double(x)函數(shù)。愛掏網(wǎng) - it200.com

2. reduce函數(shù)

reduce()函數(shù)也是Python中的內(nèi)置函數(shù),它能夠?qū)⒁粋€函數(shù)作用在一個序列上,將序列中的前兩個元素進行操作,得到一個結(jié)果后再與第三個元素進行操作,直到序列中的所有元素都完成操作。愛掏網(wǎng) - it200.com它的基本語法為:

reduce(function, iterable[, initial])

其中,function是一個函數(shù),iterable是一個可迭代對象,initial是一個可選項,表示操作的初始值。愛掏網(wǎng) - it200.com

下面是一個例子,計算列表中所有元素的乘積:

from functools import reduce

lst = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, lst)

print(product)  # 120

這里我們需要使用functools模塊中的reduce()函數(shù)。愛掏網(wǎng) - it200.com在這個例子中,我們使用了lambda表達式來定義對兩個元素的操作(將它們相乘),然后將這個表達式傳遞給reduce()函數(shù)。愛掏網(wǎng) - it200.com最后,整個序列的元素被逐個乘起來,得到結(jié)果為120。愛掏網(wǎng) - it200.com如果沒有提供initial參數(shù),reduce()函數(shù)將從序列的第一個元素開始操作。愛掏網(wǎng) - it200.com

3. filter函數(shù)

filter()函數(shù)也是Python中的內(nèi)置函數(shù),它能夠根據(jù)給定的函數(shù)對序列進行過濾,返回一個新的列表,這個列表包含所有在序列中返回True的元素。愛掏網(wǎng) - it200.com它的基本語法為:

filter(function, iterable)

其中,function是一個函數(shù),iterable是一個可迭代對象,表示要進行過濾的序列。愛掏網(wǎng) - it200.com

下面是一個例子,從一個列表中篩選出所有的偶數(shù):

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_lst = filter(lambda x: x % 2 == 0, lst)

print(list(even_lst))  # [2, 4, 6, 8, 10]

我們同樣可以使用一個函數(shù)來代替lambda表達式:

聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 精品视频一区二区三区四区五区| 中日韩国语视频在线观看| 亚洲国产日韩欧美| 99ri国产在线| 老子影院我不卡| 欧美一区二区三区四区视频| 国产精品青草久久久久福利99| 亚洲视频天天射| 中文字幕乱码人妻一区二区三区| 人人影院免费大片| 欧美videos极品| 国内国外精品影片无人区| 四虎影视永久免费观看地址| 五月婷婷婷婷婷| 国产三级毛片视频| 日韩AV片无码一区二区不卡| 国产精品视频yy9099| 亚洲国产小视频| 国产精品久久久久久麻豆一区| 日韩欧美卡一卡二卡新区| 国产精品久久国产精品99| 亚洲一卡2卡3卡4卡国产网站| 97精品伊人久久久大香线蕉| 福利视频导航网| 成年大片免费视频| 国产三级在线观看免费| 中文字幕精品一区二区| 蜜桃丶麻豆91制片厂| 日韩有码第一页| 国产a级黄色毛片| www.午夜视频| 欧美精欧美乱码一二三四区| 天下第一社区视频welcome | 亚洲欧美在线观看首页| www亚洲精品少妇裸乳一区二区| 狠狠色噜噜狠狠狠狠97| 天天爱天天干天天| 免费在线看污网站| 一个人看的片免费高清大全| 精品综合久久久久久8888| 夜色www国产精品资源站|