1. 迭代器和生成器的區別?

    2020-06-10 09:20發布

    63條回答
    愛學習的蝸牛
    1樓 · 2020-06-10 09:43.采納回答

    迭代器與生成器的區別:
    (1)生成器:
    生成器本質上就是一個函數,它記住了上一次返回時在函數體中的位置。
    對生成器函數的第二次(或第n次)調用,跳轉到函數上一次掛起的位置。
    而且記錄了程序執行的上下文。
    生成器不僅“記住”了它的數據狀態,生成器還記住了程序執行的位置。

    (2)迭代器

    迭代器是一種支持next()操作的對象。它包含了一組元素,當執行next()操作時,返回其中一個元素。
    當所有元素都被返回后,再執行next()報異?!猄topIteration
    生成器一定是可迭代的,也一定是迭代器對象

    (3)區別:
    ①生成器是生成元素的,迭代器是訪問集合元素的一中方式
    ②迭代輸出生成器的內容
    ③迭代器是一種支持next()操作的對象
    ④迭代器(iterator):其中iterator對象表示的是一個數據流,可以把它看做一個有序序列,但我們不能提前知道序列的長度,只有通過nex()函數實現需要計算的下一個數據??梢钥醋錾善鞯囊粋€子集。


    老易
    2樓-- · 2020-06-19 11:26
    先說迭代器,對于string、list、dict、tuple等這類容器對象,使用for循環遍歷是很方便的。在后臺for語句對容器對象調用iter()函數,iter()是python的內置函數。iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()也是python的內置函數。在沒有后續元素時,next()會拋出一個StopIteration異常,通知for語句循環結束。
    生成器(Generator)是創建迭代器的簡單而強大的工具。它們寫起來就像是正規的函數,只是在需要返回數據的時候使用yield語句。每次next()被調用時,生成器會返回它脫離的位置(它記憶語句最后一次執行的位置和所有的數據值)。


    mrliang
    3樓-- · 2020-07-07 09:29

    一句話來解釋:迭代器是用來訪問的有next操作,生成器,肯定是用來生成的啊。加油。

    巖巖ing
    4樓-- · 2020-07-13 13:42

    迭代器是一個更抽象的概念,任何對象,如果它的類有 next 方法和 iter 方法返回自己本身,對于 string、list、
    dict、tuple 等這類容器對象,使用 for 循環遍歷是很方便的。在后臺 for 語句對容器對象調用 iter()函數,iter()
    是 python 的內置函數。iter()會返回一個定義了 next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()
    也是 python 的內置函數。在沒有后續元素時,next()會拋出一個 StopIteration 異常。


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


    小豬丨佩奇home
    5樓-- · 2020-07-15 09:24

    1、迭代器(iterator)是一個實現了迭代器協議的對象,python的一些內置數據類型(列表,數組,字符串,字典等)都可以通過for語句進行迭代,我們也可以自己創建一個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopIteration異常。

    2、生成器(generator)是通過yield語句快速生成迭代器,可以不用iter和next方法

    yield可以使一個普通函數變成一個生成器,并且相應的next()方法返回是yield后的值。一種更直觀的解釋是:程序執行到yield時會返回結果并暫停,再次調用next時會從上次暫停的地方繼續開始執行。

    顯然,生成器自身有構成一個迭代器,每次迭代時使用一個yield返回 的值,一個生成器中可以有多個yield的值


    何大俠
    6樓-- · 2020-07-15 15:52

    迭代器與生成器的區別:

    (1)生成器:

    生成器本質上就是一個函數,它記住了上一次返回時在函數體中的位置。

    對生成器函數的第二次(或第n次)調用,跳轉到函數上一次掛起的位置。

    而且記錄了程序執行的上下文。

    生成器不僅“記住”了它的數據狀態,生成還記住了程序執行的位置。


    區別:

    ①生成器是生成元素的,迭代器是訪問集合元素的一中方式

    ②迭代輸出生成器的內容

    ③迭代器是一種支持next()操作的對象

    ④迭代器(iterator):其中iterator對象表示的是一個數據流,可以把它看做一個有序序列,但我們不能提前知道序列的長度,只有通過nex()函數實現需要計算的下一個數據??梢钥醋錾善鞯囊粋€子集。


    小獅子
    7樓-- · 2020-07-22 09:46

    迭代器與生成器的2113別:
    (1)生成5261器:
    生成器本質4102就是一個函數1653,它記住了上一次返回時在函數體中的位置。
    對生成器函數的第二次(或第n次)調用,跳轉到函數上一次掛起的位置。
    而且記錄了程序執行的上下文。
    生成器不僅“記住”了它的數據狀態,生成器還記住了程序執行的位置。
    (2)迭代器
    迭代器是一種支持next()操作的對象。它包含了一組元素,當執行next()操作時,返回其中一個元素。
    當所有元素都被返回后,再執行next()報異?!猄topIteration
    生成器一定是可迭代的,也一定是迭代器對象
    (3)區別:

    ①生成器是生成元素的,迭代器是訪問集合元素的一中方式

    ②迭代輸出生成器的內容

    ③迭代器是一種支持next()操作的對象

    ④迭代器(iterator):其中iterator對象表示的是一個數據流,可以把它看做一個有序序列,但我們不能提前知道序列的長度,只有通過nex()函數實現需要計算的下一個數據??梢钥醋錾善鞯囊粋€子集。

    蝸牛
    8樓-- · 2020-07-22 11:36

    1、共同點

    • 生成器是一種特殊的迭代器

    2、不同點

    a、語法上

    • 生成器是通過函數的形式中調用 yield 或()的形式創建的

    • 迭代器可以通過 iter() 內置函數創建

    b、用法上

    • 生成器在調用next()函數或for循環中,所有過程被執行,且返回值

    • 迭代器在調用next()函數或for循環中,所有值被返回,沒有其他過程或說動作。


    我是大臉貓 - 峽谷鋼琴家
    9樓-- · 2020-07-30 09:25
    對于list、string、tuple、dict等這些容器對象,使用for循環遍歷是很方便的。在后臺for語句對容器對象調用iter()函數。iter()是Python內置函數。
    iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內的元素。next()也是python內置函數。在沒有后續元素時,next()會拋出一個StopIteration異常,通知for語句循環結束。


    日日摸夜夜添夜夜添无码,free性欧美极度另类,超清中文乱码字幕在线观看,真人美女两腿张开露PP图片