python 學習日記4(reduce ,filter(有坑),lambda)

1. reduce(函數(shù),序列):

將序列以迭代的形式用函數(shù)處理.

示例程序:

有一個列表A,里面全是數(shù)字,把A里的每一個數(shù)字轉化成對應的字符,如2->'2'。生成一個字符列表,然后把列表的每一個字符鏈接成一個字符串,每個字符之間用~鏈接

a=[1,2,3,4,5,6,7,8,9,0]

def num_to_str(num):

num=str(num)

return num

def str_to_strs(num1,num2):

return num1+'~'+num2

a=map(num_to_str,a)

a=reduce(str_to_strs,a)

此處將a仲字符一個一個迭代下去.但函數(shù)中必須是兩個輸入?yún)?shù)(不能多或少).不然會報錯.

2.filter(function, sequence)

對sequence中的item依次執(zhí)行function(item),將執(zhí)行結果為True的item組成一個List/String/Tuple(取決于sequence的類型)返回:

>>> def f(x): return x % 2 != 0 and x % 3 != 0

>>> filter(f, range(2, 25))

[5, 7, 11, 13, 17, 19, 23]

>>> def f(x): return x != 'a'

>>> filter(f, "abcdef")

'bcdef'

我好奇將上面程序的map函數(shù)改為filter函數(shù)發(fā)現(xiàn)其返回的序列還是int型的完整序列.原因不明,以后填坑把.

3.lambda函數(shù)也叫匿名函數(shù)

lambda 參數(shù):作用

作用可以是已有的函數(shù),如:a=map(lambda x:str(x),a)

也是對a仲的數(shù)字轉換成字符.

也可以直接寫出處理方式如:

add2=lambda x,y:x+y

print add2(1,2) ?#3

lambda:"kjgsdlkjglfsdk"

這種方法則直接返回此字符串

bar =lambda:'beginman'

print bar() ? ? ? ?#beginman


這樣最上方的程序就可以改為

a=[1,2,3,4,5,6,7,8,9,0]

def str_to_strs(num1,num2):

? ? ? ? ?return num1+'~'+num2

a=map(lambda x:str(x),a)

a=reduce(str_to_strs,a)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 兩本不錯的書: 《Python參考手冊》:對Python各個標準模塊,特性介紹的比較詳細。 《Python核心編程...
    靜熙老師哈哈哈閱讀 3,443評論 0 80
  • http://python.jobbole.com/85231/ 關于專業(yè)技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,804評論 1 118
  • 教程地址:python進階 - 慕課網 python函數(shù)式編程 變量可以指向函數(shù): f = absprint(f)...
    竹口小生閱讀 681評論 0 2
  • 不知道說什么,可是總感覺會發(fā)生什么事,就像夏天炙熱的太陽,也需這就是向上的力量吧,二哈
    糖糖果ya閱讀 157評論 0 0
  • 今早,剛走進教室,小W就走向我:“王老師,昨天在宿舍里發(fā)生的事情我能不能和你聊一聊”。 我簡直無法接受我眼前的一切...
    飛鳥王瓊閱讀 703評論 0 8

友情鏈接更多精彩內容