python函數語言程式設計詳解
函數語言程式設計:是指程式碼中每一塊都是不可變的,都由純函式的形式組成。這裡的純函式,是指函式本身相互獨立、互不影響,對於相同的輸入,總會有相同的輸出。並且允許把函式本身作為引數傳入另一個函式,還允許返回一個函式。
例如實現列表元素的二次方:
def multiply_2(list):
new_list=[]
for i in list:
new_list.append(item**2)
return new_list
# 函數語言程式設計的優點,主要在於其純函式和不可變的特性使程式更加健壯,易於除錯和測試;缺點主要在於限制多,難寫。
純粹的函數語言程式設計語言(比如 Scala),其編寫的函式中是沒有變數的,因此可以保證,只要輸入是確定的,輸出就是確定的;而允許使用變數的程式設計語言,由於函式內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出。
Python 允許使用變數,所以它並不是一門純函數語言程式設計語言。Python 僅對函數語言程式設計提供了部分支援,主要包括 map()、filter() 和 reduce() 這 3 個函式,它們通常都結合 lambda 匿名函式一起使用。
python map()函式
基本語法格式:
map(function,iterable)
# function 參數列示要傳入一個函式,其可以是內建函式、自定義函式或者 lambda 匿名函式;iterable 表示一個或多個可迭代物件,可以是列表、字串等
函式的功能:
對可迭代物件的每一個元素,都呼叫傳入的函式,並返回一個map物件
注意的是該map物件不能直接列印出來,需要透過for迴圈遍歷或者將其透過list()轉化為list物件才能顯示出來
示例:
list_demo=[6,7,8]
new_list=map(lambda x:x**2,list_demo)
print(list(new_list))
map() 函式是直接由用 C 語言寫的,執行時不需要透過 Python 直譯器間接呼叫,並且內部做了諸多最佳化,所以相比其他方法,此方法的執行效率最高。
python filter()函式
基本語法格式: 鄭州人流醫院哪家好
filter(function,iterable)
#功能是對 iterable 中的每個元素,都使用 function 函式判斷,並返回 True 或者 False,最後將返回 True 的元素組成一個新的可遍歷的集合。
示例:
list_demo=[6,7,8]
new_list=filter(lambda x:x%2==0,list_demo)
print(list(new_list))
python reduce()函式
基本語法格式:
reduce(function,iterable)
# 其中,function 規定必須是一個包含 2 個引數的函式;iterable 表示可迭代物件。
reduce() 函式通常用來對一個集合做一些累積操作.
使用之前需要匯入functools模組
示例:
# 計算列表乘積
import functools
list_demo=[6,7,8]
result=functools.reduce(lambda x,y:x*y,list_demo)
print(result)
綜合來看:
當對集合中的元素進行一些操作時,如果操作非常簡單,比如相加、累積這種,那麼應該優先考慮使用 map()、filter()、reduce() 實現。另外,在資料量非常多的情況下(比如機器學習的應用),一般更傾向於函數語言程式設計的表示,因為效率更高。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2678256/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python函數語言程式設計Python函數程式設計
- python函數語言程式設計一Python函數程式設計
- python函數語言程式設計二Python函數程式設計
- Python函數語言程式設計術語大全Python函數程式設計
- python是函數語言程式設計嗎Python函數程式設計
- Python函數語言程式設計自帶函式Python函數程式設計函式
- Python 函數語言程式設計 – 高階函式Python函數程式設計函式
- Java Stream函數語言程式設計案例圖文詳解Java函數程式設計
- 函數語言程式設計函數程式設計
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- Python學習之函數語言程式設計Python函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- Java 函數語言程式設計Java函數程式設計
- javascript函數語言程式設計JavaScript函數程式設計
- 函數語言程式設計,真香函數程式設計
- Python函數語言程式設計系列007:惰性求值Python函數程式設計
- Python函數語言程式設計系列008:可測Python函數程式設計
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- 函數語言程式設計前菜函數程式設計
- 函數語言程式設計雜談函數程式設計
- 初見函數語言程式設計函數程式設計
- RAC的函數語言程式設計函數程式設計
- JavaScript 函數語言程式設計(二)JavaScript函數程式設計
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- JavaScript 函數語言程式設計(三)JavaScript函數程式設計
- 5分鐘學會 Python 函數語言程式設計Python函數程式設計
- Python函數語言程式設計系列001:無副作用Python函數程式設計
- python函數語言程式設計之yield表示式形式Python函數程式設計
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- .NET併發程式設計-函數語言程式設計程式設計函數
- 函數語言程式設計-鏈式程式設計RAC函數程式設計
- 瞭解 JavaScript 函數語言程式設計 - 柯里化JavaScript函數程式設計
- 函數語言程式設計瞭解一下(下)函數程式設計
- 函數語言程式設計瞭解一下(上)函數程式設計
- Python中的Map、Reduce和Filter函數語言程式設計PythonFilter函數程式設計
- Python函數語言程式設計系列002:水管模型和composePython函數程式設計模型
- 使用 Python 的 toolz 庫開始函數語言程式設計Python函數程式設計
- 【廖雪峰python進階筆記】函數語言程式設計Python筆記函數程式設計