Python可迭代跟迭代器的區別

2021-08-30 21:50:54 字數 754 閱讀 3065

l1 = [1, 2, 3, 4]

l2 = [11, 22, 33, 44]

l = zip(l1, l2)

for i in l:

print(i)

l3 = [i for i in l]

print(l3)

輸出:

(1, 11)

(2, 22)

(3, 33)

(4, 44)

為什麼l3輸出為呢,這是因為zip()函式的返回結果為乙個迭代器,根據迭代器的意義可知,在for迴圈的時候,已經將l中的資料取出來了,所以到for結束時了l已經是乙個空列表了,之後再用列表生成,因為l是空的,所以l3也是空的,故輸出。

當我們查可迭代物件時,會發現list,tuple等都是可迭代的,然後看如下**:

l1 = (1, 2, 3)

for i in l1:

print(i)

l2 = [i for i in l1]

print(l2)

輸出:

123

[1, 2, 3]

為什麼list就可以輸出呢,這就是我要講的區別:可迭代跟迭代器不是乙個概念,迭代器是可迭代的,但不可以說可迭代的都是迭代器,就像牛肉是可以吃的,但是可以吃的比一定是牛肉,第乙個取沒了的是迭代器,對於可迭代的比如list沒有這個說法。

PYTHON 迭代器 可迭代物件

通過重複執行的 處理相似的資料集的過程,並且本次迭代的處理資料要依賴上一次的結果繼續往下做,上一次產生的結果為下一次產生結果的初始狀態,如果中途有任何停頓,都不能算是迭代。1 非迭代例子 loop 0 while loop 3 print hello world loop 1 2 迭代例子 loop...

python 迭代器與可迭代物件

主要有兩個方法next 與iter next不斷返回下乙個元素,知道元素全部返回後出現異常,可以節省記憶體空間。iter是迭代,可以把乙個列表直接轉換成迭代器,然後使用next 方法。data list 1,2,3,4,5 data list iter data list print next da...

Python 迭代器與可迭代物件

迭代器可以讓我們訪問集合的時候變得非常方便。之前我們通過for.in.的方式訪問乙個集合的時候,就是使用迭代器完成的。如果沒有迭代器,那麼我們只能通過while迴圈,每次迴圈的時候通過下標訪問了。可以直接使用for迴圈遍歷的物件,成為可迭代的物件,常見的可迭代的物件有 list tuple dict...