第二次筆記

2021-10-10 11:39:32 字數 1513 閱讀 6689

###大資料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...