filter(function, iterable)
高階函式,可以用來過濾能迭代的物件。關鍵是可以定製自己的過濾函式。返回乙個迭代物件(python3.x)
import math
def is_sqr(x):
return math.sqrt(x) % 1 == 0
tmplist = filter(is_sqr, range(1, 101))
newlist = list(tmplist)
print(newlist)
輸出結果 :
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。
函式名也是變數,即函式是乙個物件。函式式程式設計就是指這種高度抽象的程式設計正規化。
def add(x, y, f):
return f(x) + f(y)
當我們呼叫add(-5, 6, abs)時,引數x,y和f分別接收-5,6和abs,
根據函式定義,我們可以推導計算過程為:
x ==> -5
y ==> 6
f ==> abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11
函式式程式設計中最古老的例子莫過於2023年被創造出來的lisp了,透過 lisp,可以用精簡的人力。較現代的例子包括haskell、clean、erlang和miranda等。
函式程式設計支援函式作為第一類物件,有時稱為閉包或者**仿函式(functor)**物件。實質上,閉包是起函式的作用並可以像物件一樣操作的物件。
優點:缺點:
程式語言主要有三種型別:
命令式程式設計(imperative programming): 專注於」如何去做」,這樣不管」做什麼」,都會按照你的命令去做。解決某一問題的具體演算法實現。
函式式程式設計(functional programming):把運算過程盡量寫成一系列巢狀的函式呼叫。
邏輯式程式設計(logical programming):它設定答案須符合的規則來解決問題,而非設定步驟來解決問題。過程是事實+規則=結果
要理解閉包,首先要理解python的變數作用域。
python語言中形成閉包的三個條件,缺一不可:
必須有乙個內嵌函式(函式裡定義的函式)——這對應函式之間的巢狀
內嵌函式必須引用乙個定義在閉合範圍內(外部函式裡)的變數——內部函式引用外部變數
外部函式必須返回內嵌函式——必須返回那個內部函式
參考:my coding.net
python3 filter() 函式) 入門篇
高階函式
函式式程式設計
函式式程式設計介紹
什麼是閉包?閉包的優缺點?
python中的閉包
Python filter 函式的使用
描述 filter 函式用於過濾序列,過濾掉不符合條件的元素,返回乙個迭代器物件,如果要轉換為列表,可以使用 list 來轉換。該接收兩個引數,第乙個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 true 或 false,最後將返回 true 的元素放到新列表中。語法 以下...
Python filter函式筆記(一)
在雪峰前輩的filter教程中是如此介紹filter函式的 filter 把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。詳細來說是這個樣子 具有篩選功能 可返回true和false的函式 def not empty s return s and s.s...
Python filter函式的幾個例子
關於filter函式的語法介紹可參照 菜鳥教程filter函式 首先看一下菜鳥教程的例子 篩選奇數 defis odd n return n 2 1 filter返回的是乙個迭代器 tmplist filter is odd,1 2,3 4,5 6,7 8,9 10 newlist list tmp...