Python語言 迭代器

2021-08-21 02:39:50 字數 1691 閱讀 7140

可以被next()函式呼叫並不斷返回下乙個值的物件稱為迭代器 iterator

生成器是迭代器,但迭代器不一定是生成器

把可迭代物件(比如list,dict,str)變成迭代器的方法是 iter()

python 的 iterator物件表示的是資料流,資料流可以看做是乙個有序序列,

iterator只有在需要下乙個資料的時候才會計算

iterator 可以表示乙個無限大的資料流,比如說全體自然數。之所以可以表示,是因為

只有在需要的時候才會計算下乙個自然數的值,而不會儲存全部自然數

from collections import iterable,iterator
iterable:可迭代

iterator:迭代器

#可迭代物件

a = isinstance([1,2,3],iterable)

b = isinstance('123',iterable)

c = isinstance((1,2,3),iterable)

d = isinstance(set([1,2,3]),iterable)

e = isinstance(,iterable)

print(a,b,c,d,e)

#true true true true true

isinstance(a,b),是檢查a物件是否是b型別的示例
以上可以見得,list str tuple set dict都是可迭代物件

a = isinstance([1,2,3],iterator)

b = isinstance('123',iterator)

c = isinstance((1,2,3),iterator)

d = isinstance(set([1,2,3]),iterator)

e = isinstance(,iterator)

print(a,b,c,d,e)

#false false false false false

說明他們只是可迭代物件,並非迭代器
a = isinstance(iter([1,2,3]),iterator)

b = isinstance(iter('123'),iterator)

c = isinstance(iter((1,2,3)),iterator)

d = isinstance(iter(set([1,2,3])),iterator)

e = isinstance(iter(),iterator)

print(a,b,c,d,e)

#true true true true true

如上,我們可以參考乙個可迭代物件,生成乙個迭代器

#迭代器函式

def fib(num):

#斐波拉契數列

a,b = 0,1

for i in range(num):

yield b

a,b = b,a+b

gen = fib(10)

a = isinstance(gen,iterator)

print(a)

#true

可以說明迭代器函式生成的的確是迭代器

python 迭代器 python迭代器

迭代器 可以直接作用for迴圈的資料型別 我們已經知道,可以直接作用for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 可迭代物件定義 這些可以直接作用fo...

python的迭代器 Python 迭代器

迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...

python的迭代器 python 迭代器

在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...