日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python中的高階函數filter、map、reduce

系統 1787 0

1.filter()函數

filter() ?函數用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,如果要轉換為列表,可以使用? list() ?來轉換。

該函數接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。

filter(function, iterable)

function -- 判斷函數。

iterable -- 可迭代對象。

返回一個可迭代的的對象。

比如:

判斷一個列表字符串中,是否包含數字,然后取出數字。

s=['12jk','29','322','gfhkd','283','90']
def list1(n):
if n.isdigit():
return n
h=filter(list1,s)
print(list(h))

結果:['29', '322', '283', '90']

2.map()函數

map()函數接收兩個參數,一個是函數,一個是序列,map 將傳入的函數依次作用到序列的每個元素,并把結果作為新的list返回。

比如:

將某個列表數字中,每個數字都進行加1,然后輸出新的列表。

s=[2,4,6,8,10]
def square(n):
return n+1
h=map(square,s)
z=list(h)
print(z)

3.reduce()函數

reduce()函數接收的參數和 map()類似,一個函數 f,一個list,但行為和 map()不同,reduce()傳入的函數 f 必須接收兩個參數,reduce()對list的每個元素反復調用函數f,并返回最終結果值。

比如:編寫一個f函數,接收x和y,返回x和y的和:

def f(x, y):
return x + y
調用 reduce(f, [1, 3, 5, 7, 9])時,reduce函數將做如下計算:

先計算頭兩個元素:f(1, 3),結果為4;
再把結果和第3個元素計算:f(4, 5),結果為9;
再把結果和第4個元素計算:f(9, 7),結果為16;
再把結果和第5個元素計算:f(16, 9),結果為25;
由于沒有更多的元素了,計算結束,返回結果25。
上述計算實際上是對 list 的所有元素求和。雖然Python內置了求和函數sum(),但是,利用reduce()求和也很簡單。

reduce()還可以接收第3個可選參數,作為計算的初始值。如果把初始值設為100,計算:

reduce(f, [1, 3, 5, 7, 9], 100)
結果將變為125,因為第一輪計算是:

計算初始值和第一個元素:f(100, 1),結果為101。

任務
Python內置了求和函數sum(),但沒有求積的函數,請利用recude()來求積:

輸入:[2, 4, 5, 7, 12]
輸出:2*4*5*7*12的結果


def prod(x, y):
return x*y

print reduce(prod, [2, 4, 5, 7, 12])

PS:以上內容和實例,摘自網上,如有雷同,請聯系我刪除。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 佳木斯市| 克什克腾旗| 乌兰县| 乌拉特前旗| 永康市| 卢龙县| 杭州市| 福泉市| 霍邱县| 互助| 抚松县| 宝兴县| 霞浦县| 安龙县| 合肥市| 苏尼特右旗| 房产| 利川市| 宁海县| 辽阳县| 济宁市| 昌宁县| 景德镇市| 鄂托克旗| 余干县| 泉州市| 庄河市| 天全县| 资溪县| 禄劝| 南皮县| 玉门市| 探索| 大姚县| 贵定县| 北海市| 泾川县| 江华| 玉屏| 渭南市| 龙山县|