日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python-用Map, Filter, Reduce代替For循环

發布時間:2025/4/5 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python-用Map, Filter, Reduce代替For循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

for 循環就像是一把瑞士軍刀,它可以解決很多問題,但是,當你需要掃視代碼,快速搞清楚代碼所做的事情時,它們可能會讓人不知所措。

map、filter 和 reduce 這三種技術可以提供描述迭代原因的函數替代方案,以便避免過多的 for 循環。

劃重點:迭代

?什么是 Map、Filter 和 Reduce?

在寫代碼時 95% 的時間都花在遍歷字符串或數組上。在這種情況下,一般會執行以下操作之一:將一系列語句映射到每個值,篩選滿足特定條件的值,或將數據集減少為單個聚合值。

其實循環遍歷通常屬于這三種功能類別之一:

  • Map:對每個項應用相同的步驟集,存儲結果

  • Filter:應用驗證條件,存儲計算結果為 True 的項

  • Reduce:返回一個從元素傳遞到元素的值

?Python中的 Map/Filter/Reduce?

在 Python 中,這三種技術作為函數存在,而不是數組或字符串類的方法。這意味著,得編寫 map(function, my_list),而不是編寫 my_array.map(function)。

此外,每個技術都需要傳遞一個函數,該函數將執行每個項目。通常,該函數是作為匿名函數(在 JavaScript 中稱為 arrow 頭函數)編寫的。但是,在 Python 中,經常看到被使用的是 lambda 表達式

lambda 表達式和 arrow 函數之間的語法實際上非常相似。將 => 替換為 :?并確保使用關鍵字 lambda,其余的幾乎相同。

// Python Lambda Expressionsquare = lambda number: number * number

arrow 函數和 lambda 表達式之間的一個關鍵區別是,arrow 函數能夠通過多個語句擴展成完整的函數,而 lambda 表達式僅限于返回的單個表達式。因此,在使用 map()、filter()或 reduce()時,如果需要對每個項執行多個操作,請先定義函數,然后再包含它。

def inefficientSquare(number): result = number * number return result map(inefficientSquare, my_list)

替換 for 循環

下面是三個常見的 for 循環示例,它們將被 map、filter 和 reduce 替換。目標:計算列表中奇數平方和。

首先,使用 基本的 for 循環示例。注意:下面的代碼純粹是為了演示,即使沒有 map/filter/reduce 也有改進空間。

numbers = [1,2,3,4,5,6]odd_numbers = []squared_odd_numbers = []total = 0 # filter for odd numbersfor number in numbers: if number % 2 == 1: odd_numbers.append(number) # square all odd numbersfor number in odd_numbers: squared_odd_numbers.append(number * number) # calculate totalfor number in squared_odd_numbers:??total?+=?number # calculate average

將每個步驟轉換為這三個函數的其中之一:

from functools import reducenumbers = [1,2,3,4,5,6]odd_numbers = filter(lambda n: n % 2 == 1, numbers)squared_odd_numbers = map(lambda n: n * n, odd_numbers)total = reduce(lambda acc, n: acc + n, squared_odd_numbers)

有幾個重要的語法要點要強調。

  • map()和 filter()本機可用。但是,reduce()必須從 Python 3 以上版本中的函數庫導入

  • lambda 表達式是所有三個函數中的第一個參數,iterable 是第二個參數

  • reduce()的 lambda 表達式需要兩個參數:累加器(傳遞給每個元素的值)和單個元素本身

via:https://medium.com/better-programming/how-to-replace-your-python-for-loops-with-map-filter-and-reduce-c1b5fa96f43a

總結

以上是生活随笔為你收集整理的python-用Map, Filter, Reduce代替For循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 曰女同女同中文字幕 | 久久久久亚洲av成人人电影 | 欧美日韩 一区二区三区 | 裸体美女免费视频网站 | 免费做a爰片77777 | 亚洲 欧美 激情 小说 另类 | 神马午夜电影一区二区三区在线观看 | 三级不卡 | 亚洲a级在线观看 | 极品白嫩丰满少妇无套 | 双女主黄文 | 性久久| 中国美女一级看片 | 久久成人福利视频 | 暖暖日本在线 | 51久久久 | 国产免费a级片 | 女生裸体无遮挡 | 美女视屏| 午夜爽爽影院 | 精品少妇人妻一区二区黑料社区 | 成人观看视频 | 亚洲第一精品在线 | 欧美成人性色 | 毛片视频网址 | 日韩精品亚洲精品 | 亚洲成人久久精品 | www.youjizz.com在线观看 | 日本性高潮视频 | 国产极品视频在线观看 | 秋霞精品一区二区三区 | 久久九九国产精品 | 国产成人无码久久久精品天美传媒 | 在线免费黄色片 | wwwav在线播放 | 久久久久18 | 69视频一区二区三区 | 丰满多毛的大隂户视频 | 人人爱人人 | 久久综合国产精品 | 亚洲AV无码精品黑人黑人 | 欧美做受高潮动漫 | 亚洲精品免费电影 | 美女隐私黄www网站动漫 | 免费黄色av片 | 欧美日韩成人一区二区 | 亚色视频在线 | 久久精品波多野结衣 | 动漫美女无遮挡免费 | 成人黄色小视频 | 紧身裙女教师三上悠亚红杏 | 日韩av在线中文字幕 | 最新中文字幕久久 | 日本在线成人 | 中文字幕视频一区 | 色天使亚洲 | 日韩三级网 | 欧美视频h| 熟妇高潮一区二区高潮 | 人人干视频 | 男性裸体全身精光gay | av在线伊人 | 在线免费看av片 | 国产精品久久久久国产a级 国产一区二区在线播放 | 黄色一级国产 | 国产欧美综合一区二区三区 | 亚洲成人xxx | 精品亚洲永久免费 | 四虎av网站 | 中国一极毛片 | 91国偷自产一区二区三区观看 | 精品一区二区三区成人免费视频 | 性久久久久久久 | 一区二区三区欧美视频 | 亚洲中文字幕一区二区在线观看 | 国产乱子视频 | 日日操av| 99热在 | 成人亚洲一区 | 九九九视频在线观看 | 午夜黄色一级片 | 久草高清视频 | 中文字幕在线观看日本 | 国产精品亚洲二区 | 免费无码av片在线观看 | 大尺度做爰呻吟62集 | 亚洲天堂一区在线观看 | 成人羞羞在线观看网站 | 亚洲精品日本 | 熟妇人妻中文av无码 | 九九热九九 | 国产欧美精品一区二区三区app | 蜜桃av免费在线观看 | 日日骚av一区二区 | 三级av网址 | 中文字幕三区 | 99热影院 | 天堂在线视频tv | 97精品国产 |