首先區分迭代和迭代器
迭代:通過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...