迭代器和生成器

2021-10-01 22:41:11 字數 1628 閱讀 4315

首先區分迭代和迭代器

迭代:通過for迴圈遍歷物件的每乙個元素的過程。python中任何可迭代的物件都可以通過for迴圈遍歷。

list、tuple、string、dict、set、bytes都是可以迭代的資料型別。

迭代器:迭代器是一種可以被遍歷的物件,並且能作用於next()函式。迭代器物件從集合的第乙個元素開始方位,知道所有的元素被訪問完-結束。迭代器只能往後遍歷不能回溯,不像列表,可以取任意想取的。

l =[1

,2,3

,4]# 將列表轉l換為迭代器

it =

iter

(l)print

(next

(it)

)print

(next

(it)

)print

(next

(it)

)print

(next

(it)

)# 1

# 2# 3

# 4

迭代器就是這樣,只能乙個接乙個的訪問,如果在加乙個print(next(it)),就會報錯,因為迭代器已經訪問完了。

也可使用for迴圈去遍歷訪問。

斐波那契數列

def

fibonacci()

: a =

0 b =

1for i in

range(5

):print

(b) a, b = b, a+b

fibonacci(

)

讓上面的變成生成器,加了yield就變成了生成器

def

fibonacci()

:print

('func start'

) a =

0 b =

1for i in

range(5

):print

('--1--'

)# 生成器

yield b

print

('--2--'

) a, b = b, a+b

print

('--3--'

)f = fibonacci(

)print

(next

(f))

print

(next

(f))

print

(next

(f))

print

(next

(f))

print

(next

(f))

我們看一下生成器執行的過程

func start--

1--1

--2-

---3

----

1--1

--2-

---3

----

1--2

--2-

---3

----

1--3

--2-

---3

----

1--5

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...