第十三天 迭代器 遞迴

2022-09-13 10:33:12 字數 2436 閱讀 1415

目錄三元表示式

列表推導式

字典生成式

生成器生成式

遞迴迭代器不是乙個函式,它就是乙個稱呼

含有.__iter__方法的資料型別就叫做可迭代物件

x = 0

s = 'abc'

s.__iter__()

lt = [1,2,3]

lt.__iter__()

tup = (1,)

tup.__iter__()

dic =

dic.__iter__()

se =

se.__iter__()

只有數字型別不能點出來__iter__方法,所以只有數字型別不是可迭代物件,其餘資料型別都是可迭代物件。

迭代器提供了一種不依賴索引取值的方式

含有._iter__方法和 .__next__的就叫做迭代器物件

可迭代物件使用__iter__後可以變為迭代器,迭代器使用__iter__後依然是迭代器

只有檔案是可迭代器物件,只用檔案在不用iter方法時可以使用__next__方法

for迴圈本質就是乙個while迴圈,只不過是乙個可以定可控的while迴圈

dic_iter = dic.__iter__()

while true :

try :

print(dic_iter.__next__())

except stopiterration:

break

a = 10

b = 20

if a < b

print(a)

else:

print(b)

# 三元表示式寫法

print(a if azip()方法res = zip([1,2,3],[1,2,3],'abc') # res 是乙個迭代器,__iter__返回元組

print(res.__next__())

print(res.__next__())

print(res.__next__())

print(res)

# (1, 1, 'a')

# (2, 2, 'b')

# (3, 3, 'c')

# # 通過zip使兩個列表生成字典

lt1 = [1,2,3]

lt2 = ['a','b','c']

print()

#

生成器的本質就是迭代器,生成器是乙個自定義的迭代器

含有yield關鍵字的函式就叫做生成器

def scq():

yeild 3

yelid 4

print(scq())

# res = scq()

print(res.__next__)

print(res.__next__)

yield的作用:

暫停函式

通過呼叫函式拿到值

def range1(start)

count = 0

while count <0:

yield count

count += 1

res = range1(10)

print(res.__next__)

print(res.__next__)

print(res.__next__)

遞迴就是函式內部直接或間接呼叫函式本身

函式+分支語句

遞迴本身是乙個函式,需要函式定義的方式去描述

函式內部,採用分支語句對輸入的引數進行判斷,不能陷入死遞迴

遞迴函式的兩個特性:

鏈條:計算過程中存在規律

基例:退出的條件也就是遞迴的最末端,存在乙個或多個不需要再遞迴的基例。

每一次遞迴都不會結束函式,並且每一次遞迴都會開闢記憶體空間,將函式拷貝乙份進去繼續執行,直到退出條件成立,完成遞迴。

# 每次加2

def age(x):

if x == 0:

return 18

x -= 1

return age(x) + 2

res = age(6)

print(res) # 32

# 計算n的階乘

def fact(n):

if n = 0:

return 1

else:

return n*fact(n-1)

當傳的初值為6時,因為它不等於0,所以他會執行age(5)+2

但是他也不知道age(5)的值,所以計算機就會開闢乙個新的記憶體空間去計算age(5)的值,同理計算機會一直計算age(4),age(3)直到x == 0,得到age(0)的值,然後再逐步把值傳給age(1),age(2),直到age(6).最後得出age(6)的值。

第十三天 練兵

問 昨天您講的很驚心動魄。這樣快節奏的配合確實非常完美,很羨慕。但要形成這樣的結果必須我們之間配合需要非常流暢,我們有什麼方法可以促成這樣的氛圍?答 練兵。如果一開始就進入業務系統功能的設計開發,業務組長對業務還沒有很深的吃透,這樣倉促上陣功能不但連上一版不如,而且為了補課,軟體不斷修改,什麼都亂了...

2020 7 18第十三天

1.學習了static關鍵字 靜態變數,靜態方法以及靜態模組 1 public class vardemo 9 1 public class staticblockdemo 5public staticblockdemo 8public static void main string args 12...

android基礎 第十三天

可航訓練營 為幫助大家更好的 系統性的學習 android 一 progressbar頁面進度提示 密碼 9ewc 二 fragment優化選項卡切換 密碼 gvsb 三 fragment和activity進行通訊 密碼 45u2 四 xlistview上拉重新整理 密碼 na6r 五 提示對話方塊...