###大資料19-4班 26劉嘉瑞
11.5
高階函式:乙個函式可以作為引數傳給另外乙個函式,或者乙個函式的返回值為另外乙個函式(若返回值為該函式本身,則為遞迴),滿足其一則為高階函式。
當引數為函式時:
#引數為函式
def (anniversary):
print("15th anniversary..")
def zoo(func):
func()
print("in the zoo..")
anniversary(zoo)
#返回值為函式
def bar():
print("in the bar..")
def foo(func):
print("in the foo..")
return bar
res=foo(bar)
res()
匿名函式:lambda這個名稱來自於lisp,而lisp則是從lambda calculus(一種符號邏輯形式)取這個名稱的,lambda作為乙個關鍵字,作為引入表示式的語法
lambda 引數1,引數2… : 返回值
print((lambda x,y,z:x+y+z)(1,2,3))
遞迴函式的概念:程式呼叫自身的程式設計技巧稱為遞迴( recursion)。
# 使用遞迴方法實現5!
def func(n):
if n == 1 or n == 0:
return 1
else:
return n * func(n-1)
print(func(5))
遞迴函式的優點就是定義簡單,邏輯清楚。
缺點是遞迴效率不高,因為每一次呼叫都有相應的數值存放在棧,而棧的空間是有限的
因此在寫函式時候要注意不可無限遞迴或者遞迴次數非常大
例子:要求輸入乙個數字表示是第幾個數字,正確輸出第n個斐波那契數
def fun(n):
if n < 0:
print('輸入有誤!')
elif n == 1 or n == 2:
return 1
else:
return fun(n-1) + fun(n-2)
print(fun(6))
生成器–斐波那契
def f():
a, b = 1, 1
while true:
yield a # 暫停執行,需要時再產生乙個新元素
a, b = b, a+b # 繼續生成新元素
a= f()
for i in range(10):
print(next(a), end=' ')
第二次筆記
一 學習內容總結 1 迴圈結構型別 1 當型迴圈結構,表示當條件p成立 為真 時,反覆執行a操作,直到條件p不成立 為假 時結束迴圈。2 直到型迴圈結構,表示先執行a操作,再判斷條件p是否成立 為真 若條件p成立 為真 則反覆執行a操作直到條件p不成立 為假 時結束迴圈。2 c語言提供for,whi...
第二次課堂筆記
第二次課堂筆記 順序表的屬性 1 儲存空間的起始位置 2 順序表的容量 3 順序表的當前長度 順序錶類的宣告 const int maxsize 100 template class seqlist public seqlist seqlist datatype a,int n seqlist in...
第二次Python筆記
資料型別 我們所說的 型別 是變數所指的記憶體中物件 資料 的型別。資料型別決定了物件可以呼叫的方法 功能 資料型別number python自帶的資料型別包括 基本型別 數字,字串,none 空型別 布林 ture false 復合型別 列表,元組,字典,集合 其他資料物件 python支援int...