日韩欧美中文字幕在线观看_国产成人精品综合_午夜三级在线_亚洲欧美另类在线_亚洲国产精品99久久久久久久久_久久青

您現在的位置是:首頁 >python教程 >python教程十六 迭代器與生成器網站首頁python教程

python教程十六 迭代器與生成器

三只小菜猿 2023-02-10 09:35:44
簡介在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現了。調用一個生成器函數,返回的是一個迭代器對象。迭代器是一個可以記住遍歷的位置的對象。

迭代器

迭代是Python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。

迭代器有兩個基本的方法:iter() 和 next()。

字符串,列表或元組對象都可用于創建迭代器:

>>> list=[1,2,3,4]
>>> it = iter(list)    # 創建迭代器對象
>>> print (next(it))   # 輸出迭代器的下一個元素
1
>>> print (next(it))
2
>>>

迭代器對象可以使用常規for語句進行遍歷:

#!/usr/bin/python3
 
list=[1,2,3,4]
it = iter(list)    # 創建迭代器對象
for x in it:
    print (x, end=" ")

執行以上程序,輸出結果如下:

1 2 3 4

也可以使用 next() 函數:

#!/usr/bin/python3
 
import sys         # 引入 sys 模塊
 
list=[1,2,3,4]
it = iter(list)    # 創建迭代器對象
 
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

執行以上程序,輸出結果如下:

1 2 3 4

創建一個迭代器

把一個類作為一個迭代器使用需要在類中實現兩個方法 iter() 與 next() 。

如果你已經了解的面向對象編程,就知道類都有一個構造函數,Python 的構造函數為 init(), 它會在對象初始化的時候執行。

iter() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現了 next() 方法并通過 StopIteration 異常標識迭代的完成。

next() 方法(Python 2 里是 next())會返回下一個迭代器對象。

創建一個返回數字的迭代器,初始值為 1,逐步遞增 1:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

執行輸出結果為:

1 2 3 4 5

StopIteration

StopIteration 異常用于標識迭代的完成,防止出現無限循環的情況,在 next() 方法中我們可以設置在完成指定循環次數后觸發 StopIteration 異常來結束迭代。

在 20 次迭代后停止執行:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in myiter:
  print(x)

執行輸出結果為:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

生成器

在 Python 中,使用了 yield 的函數被稱為生成器(generator)。

跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。

調用一個生成器函數,返回的是一個迭代器對象。

以下實例使用 yield 實現斐波那契數列:

#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函數 - 斐波那契
    a, b, counter = 010
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10# f 是一個迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

執行以上程序,輸出結果如下:

0 1 1 2 3 5 8 13 21 34 55


夢想加空間!平時喜歡研究各種技術,目前在從事后端開發工作,熱愛生活、熱愛工作。
日韩欧美中文字幕在线观看_国产成人精品综合_午夜三级在线_亚洲欧美另类在线_亚洲国产精品99久久久久久久久_久久青
<abbr id="a4muu"><del id="a4muu"></del></abbr>
<rt id="a4muu"><code id="a4muu"></code></rt><s id="a4muu"></s>
<strike id="a4muu"><acronym id="a4muu"></acronym></strike>
<li id="a4muu"></li>
  • 
    
  • <rt id="a4muu"><acronym id="a4muu"></acronym></rt>
  • 国产精品sss| 性高湖久久久久久久久| 动漫一区二区在线| 亚洲精品社区| 女人香蕉久久**毛片精品| 久久艳妇乳肉豪妇荡乳av| 5g国产欧美日韩视频| 亚洲人体大胆视频| 激情婷婷久久| 国内精品99| 欧美一区在线看| 亚洲三区在线| 亚洲国产综合自拍| 日韩激情久久| 性欧美大战久久久久久久免费观看| 成人国产1314www色视频| 噜噜噜91成人网| 老鸭窝亚洲一区二区三区| 亚洲免费在线精品一区| 国产精品普通话对白| 在线亚洲自拍| 欧美亚洲网站| 老牛嫩草一区二区三区日本 | 欧美成人综合一区| 黑人另类av| 麻豆91蜜桃| 亚洲精品中文字幕乱码三区不卡| 久久一区免费| 亚洲欧美久久久久一区二区三区| 先锋在线资源一区二区三区| 亚洲精品人成| 国产一区在线免费观看| 影音先锋日韩资源| 先锋影音一区二区三区| 久久五月激情| 鲁丝一区二区三区免费| 日韩和欧美的一区二区| 欧美一区二区三区久久精品| 欧美日韩国产亚洲一区| 日韩视频精品| av色综合网| 日韩欧美在线一区二区| 中文字幕一区二区三区乱码 | 亚洲精品黄色| 美女国产一区| 欧美精品亚洲精品| 欧美有码视频| 国产亚洲午夜| 精品欧美国产| 欧美ab在线视频| 亚洲欧美国产精品桃花| 国产有色视频色综合| 亚洲在线不卡| 性娇小13――14欧美| 久久亚洲国产精品日日av夜夜| 亚洲国产综合自拍| 亚洲精选国产| 麻豆成人av| 欧美视频在线观看| 久久蜜桃资源一区二区老牛| 极品日韩久久| 精品动漫3d一区二区三区免费版| 久热这里只精品99re8久| 日本一区二区三区视频在线播放| 亚洲性视频h| 国产精品加勒比| 国内精品久久久久久久影视麻豆| 久久亚洲电影| 欧美在线播放一区二区| www.成人av.com| 欧美视频1区| 精品亚洲第一| 国产精品五区| 亚洲人成网站在线播放2019| 久久国产精品亚洲va麻豆| 欧美第一黄网| 老司机午夜精品视频在线观看| 欧美专区一二三| 99国产精品私拍| 亚洲欧美日韩另类精品一区二区三区 | 国产尤物99| 国产欧美日韩一区二区三区在线 | 精品国产乱码久久久久久88av| 国内综合精品午夜久久资源| 国内精品久久久久久久果冻传媒| 欧美国产综合| 欧美日韩一区综合| 久久视频一区| 亚洲免费不卡| 欧美精品免费观看二区| 精品一区二区三区自拍图片区| 亚洲毛片网站| 欧美日韩在线一二三| 日本精品一区二区三区高清 久久| 国产亚洲在线观看| 欧美精品偷拍| 亚洲精品9999| 欧洲精品久久| 久久婷婷人人澡人人喊人人爽| 国产欧美高清| 91久久极品少妇xxxxⅹ软件| 一区二区视频在线观看| 欧美男人的天堂| 精品毛片久久久久久| 91成人免费在线观看| 在线亚洲激情| 国产日韩高清一区二区三区在线| 欧美激情1区2区| 中文字幕日韩一区二区三区不卡| 欧洲精品亚洲精品| 欧美日韩精品免费看| 九色91在线视频| 久久精品午夜一区二区福利| 国产91视觉| 久热精品在线| 91传媒视频免费| 久久久久国内| 成人综合电影| 国产女主播一区二区| 国产精品美女黄网| 国产亚洲精品自在久久| 精品国产一二| 日本一区不卡| 一本久久a久久精品vr综合| 四虎一区二区| 亚洲视频在线观看日本a| 亚洲一区二区三区精品视频| 亚洲欧洲久久| 国产精品国码视频| 亚洲欧洲精品一区二区三区波多野1战4| 合欧美一区二区三区| 亚洲人成免费| 97在线中文字幕| 久久偷窥视频| 午夜激情一区| 一本色道久久综合亚洲精品不卡| 国产欧美激情| 国产精品一级久久久| 蜜桃av久久久亚洲精品| 亚洲v国产v在线观看| 欧美三区视频| 久久一二三区| 日本一区二区三区www| 欧美成人69av| 老鸭窝亚洲一区二区三区| 国产一区二区在线网站| 亚洲视频精品一区| 亚洲精选一区| 九色91在线视频| 欧美日本一区| www 成人av com| 亚洲一二区在线| 亚洲一区二区精品在线| 久久手机视频| 亚洲国产影院| 久久国产精品 国产精品| 欧美日本不卡高清| 久久久久久久久久久一区| 欧美视频观看一区| 亚洲精品在线观看免费| 精品国产福利| 亚洲日本欧美| 欧日韩一区二区三区| 亚洲欧洲一级| 欧美一区少妇| 国产精品日韩高清| 欧美日韩综合久久| 国产亚洲亚洲| 亚洲一区三区视频在线观看| 免费亚洲视频| 在线视频不卡一区二区| 99视频日韩| 在线观看日韩av电影| 久久精彩视频| 亚洲一区日韩在线| 欧美一区二区三区在线免费观看| 久久精品人人| 国产精品国码视频| 久久一区免费| 久久久噜噜噜久久狠狠50岁| 午夜精品国产| 久久影视中文粉嫩av| 久久国产日韩| 在线国产日韩| 亚洲欧洲精品一区二区三区波多野1战4 | 久久一区视频| 国产一区久久| 色一情一乱一伦一区二区三欧美| 久久天堂成人| 亚洲精品乱码视频| 欧美一区三区二区在线观看| 国产精品免费观看高清| 国产精品视频福利| 国产精品magnet| 一本一生久久a久久精品综合蜜| 国产高清精品一区二区三区| 一区二区三区四区五区在线 | 欧美人xxxxx| 成人免费视频观看视频| 亚洲永久网站|