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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
