python filter到函式式程式設計

2021-08-28 05:18:17 字數 1429 閱讀 3735

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...