亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

大城县| 京山县| 房山区| 扎兰屯市| 长葛市| 桦甸市| 惠州市| 镇安县| 射阳县| 达州市| 阳信县| 临沧市| 天门市| 遂平县| 安塞县| 凤台县| 中山市| 柳州市| 北海市| 汉源县| 手游| 亚东县| 汶川县| 平江县| 塔河县| 庆安县| 迭部县| 武陟县| 怀仁县| 马关县| 禹城市| 金昌市| 长宁县| 富阳市| 兴业县| 惠安县| 肇庆市| 永年县| 芜湖县| 明溪县| 荥经县|