python3,python函數式編程:apply, map, lambda和偏函數

 2023-12-09 阅读 35 评论 0

摘要:http://blog.csdn.net/pipisorry/article/details/38687763 Python 不是也不大可能會成為一種函數式編程語言,但是它支持許多有價值的函數式編程語言構建。也有些表現得像函數式編程機制但是從傳統上也不能被認為是函數式編程語言的構建。Python提供的以 4 種內建函數和 lambd

http://blog.csdn.net/pipisorry/article/details/38687763

Python 不是也不大可能會成為一種函數式編程語言,但是它支持許多有價值的函數式編程語言構建。也有些表現得像函數式編程機制但是從傳統上也不能被認為是函數式編程語言的構建。Python提供的以 4 種內建函數和 lambda 表達式的形式出現。

內建函數 apply()、filter()、map()、reduce()。但是列表的綜合使用的引入,部分被擯棄。

匿名函數與 lambda

偏函數應用

[Python核心編程2ed.pdf]

皮皮Blog


python 匿名函數與 lambda表達式

除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字.)

一個完整的 lambda“語句”代表了一個表達式,這個表達式的定義體必須和聲明放在同一行。我們現在來演示下匿名函數的語法:
lambda [arg1[, arg2, ... argN]]: expression

lambda只是一個表達式,函數體比def簡單很多。

lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。

lambda表達式是起到一個函數速寫的作用。允許在代碼內嵌入一個函數的定義。

lambda 表達式返回可調用的函數對象。

例子:


[Python中lambda表達式學習]

皮皮Blog



apply函數

apply(func[, nkw][, kw])

在python1.6 中有效的擯棄了 apply()。 這個函數將來會逐步淘汰,在未來版本中最終會消失。

皮皮Blog



map函數

map大多數的for循環可以用map來代替,用法是:map(func,seq),對seq中的每個元素進行操作,具體什么操作在func里定義。
我們以前是這么寫for循環的:
array = [1, 2, 3]
square_array = []
for i in array:
??? square_array.append(i ** 2)

改用map:
array = [1, 2, 3]
square_array = map(lambda i: i ** 2, array)

map的第一個參數是lambda表達式,冒號前面的i作為形參,來自于array中的元素,冒號后面就是要返回的值。
當然你也可以使用列表推導式來代替:
array = [1, 2, 3]
square_array = [i ** 2 for i in array]

皮皮Blog


filter函數

filter用法與map類似:filter(func,seq),對seq中的元素進行過濾,返回符合條件的那些元素。
比如返回array = [1, 2, 3, 4]中的所有奇數:
print filter(lambda i: i % 2, array)
這里是對2取余,返回結果為True的元素。那么什么情況下結果為True?Python里面不為0,None或者null都是True。所以結果就是,偶數是False,奇數是True,返回所有奇數。
列表推導式方案:
print [i for i in array if i % 2 != 0]

皮皮Blog


reduce函數

reduce用法:reduce(func,seq),對seq中的每個元素進行func操作,最后匯總返回一個值。
求array = [1, 2, 3]所有元素的和:
print reduce(lambda x, y: x + y, array)
reduce會先將array里面的頭兩個數分別作為x和y,求它們的和,然后把它的結果和第三個相加,再把結果和第四個相加,直到最后一個元素。
求array = [1, 2, 3]中的最大值:
print reduce(lambda x, y: x if x > y else y, array)
求strings = ["abc", "abcd", "def"]中”abc”出現的總次數:
print reduce(lambda count, str: count + str.count("abc"), strings, 0)
第三個參數0是count的初始值。


偏函數與閉包

偏函數

閉包[python變量及其作用域,閉包 ]

from:http://blog.csdn.net/pipisorry/article/details/38687763

ref:


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/194098.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息