生成器 迭代器 遞迴

2022-08-18 07:42:13 字數 1451 閱讀 2332

27、生成器:

1、    >>> def f1():

...     print(123)

...     yield 1

...     yield 2

...     yield 3

...>>> ret = f1()

>>> ret.__next__() # 進入函式找到yield 獲取yield 後面的資料。

1231

>>> ret.__next__() #進入函式找到yield 獲取yield 後面的資料。

2>>> ret.__next__() # 進入函式找到yield 獲取yield 後面的資料。

32、    >>> def f1():

...     print(123)

...     yield 1

...     yield 2

...     yield 3

...>>> ret = f1()

>>> ret1 = list(ret)

123>>> print(ret1)

[1, 2, 3]

3、生成器實現range()

def myrange(arg):

start =  0

while true:

if start >  arg:

return

yield  start

start += 1

ret = myrange(3)

r1 =  ret.__next__()

print(r1)

r1 =  ret.__next__()

print(r1)

r1 =  ret.__next__()

print(r1)

r1 =  ret.__next__()

print(r1)

r1 =  ret.__next__()

print(r1)

28、迭代器:

會使用封裝了迭代器的 for 迴圈。

29、遞迴:

1、實現累乘 :2 * 3 * 4 * 5 * 6 * 7

def func(n):

n += 1

if n > 6:

return n

return  n * func(n)

ret = func(1)

print(ret)

#2 * func(2)

#2 * 3 * func(3)

#2 * 3 * 4 * func(4)

#2 * 3 * 4 * 5 * func(5)

#2 * 3 * 4 * 5 * 6 * func(6)

#2 * 3 * 4 * 5 * 6 * 7

#實現了累乘

生成器 迭代器

最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...

迭代器,生成器

迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...

迭代器 生成器

迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...