91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python迭代器和生成器區別有哪些

發布時間:2020-09-09 13:48:44 來源:億速云 閱讀:158 作者:小新 欄目:編程語言

小編給大家分享一下python迭代器和生成器區別有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

迭代器是一個更抽象的概念,任何對象,如果它的類有 next 方法和 iter 方法返回自己本身,對于 string、list、dict、tuple 等這類容器對象,使用 for 循環遍歷是很方便的。

python迭代器和生成器區別有哪些

在后臺 for 語句對容器對象調用 iter()函數,iter()是 python 的內置函數。iter()會返回一個定義了 next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next() 也是 python 的內置函數。在沒有后續元素時,next()會拋出一個 StopIteration 異常。

# 隨便定義一個list
listArray=[1,2,3]
# 使用iter()函數
iterName=iter(listArray)
print(iterName)

生成器(Generator)是創建迭代器的簡單而強大的工具。它們寫起來就像是正規的函數,只是在需要返回數據的時候使用 yield 語句。每次 next()被調用時,生成器會返回它脫離的位置(它記憶語句最后一次執行的位置和所有的數據值)

# 菲波那切數列
def Fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return '親!沒有數據了...'
# 調用方法,生成出10個數來
f=Fib(10)
# 使用一個循環捕獲最后return 返回的值,保存在異常StopIteration的value中
while  True:
    try:
        x=next(f)
        print("f:",x)
    except StopIteration as e:
        print("生成器最后的返回值是:",e.value)
        break

區別:

生成器能做到迭代器能做的所有事,而且因為自動創建了 iter()和 next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表達式取代列表解析可以同時節省內存。除了創建和保存程序狀態的自動方法,當發生器終結時,還會自動拋出 StopIteration 異常。

看完了這篇文章,相信你對python迭代器和生成器區別有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天祝| 玉林市| 兴化市| 扶绥县| 沅江市| 昌图县| 马公市| 文登市| 明星| 福州市| 甘孜| 平和县| 什邡市| 定远县| 富川| 天台县| 自治县| 灵璧县| 定兴县| 海门市| 松潘县| 康保县| 固原市| 望都县| 昆明市| 冷水江市| 揭西县| 新安县| 昆山市| 温宿县| 遂溪县| 松原市| 通道| 信阳市| 南和县| 临夏市| 元谋县| 太康县| 东乌| 扎赉特旗| 邵阳市|