迭代是python最強大的功能之一,是訪問集合元素的一種方式。
迭代器是乙個可以記住遍歷的位置的物件。
迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。 迭代器只能往前不能後退。
迭代器有兩個基本的方法: iter() 和 next()
list = [1, 2, 3, 4]
it = iter(list) # 建立迭代器物件
print(next(it)) # 輸出迭代器的下乙個元素
1print(next(it)) # 輸出迭代器而下乙個元素
2
list = [1, 2, 3,4]
it = iter(list) # 建立迭代器物件
for x in it:
print(x, "\n")
1, 2, 3, 4
把乙個類作為乙個迭代器使用需要在類中實現兩個方法iter() 與next() 。
如果你已經了解的物件導向程式設計,就知道類都有乙個建構函式,python 的建構函式為init(), 它會在物件初始化的時候執行。
iter() 方法返回乙個特殊的迭代器物件, 這個迭代器物件實現了next() 方法並通過 stopiteration 異常標識迭代的完成。
next() 方法(python 2 裡是 next())會返回下乙個迭代器物件。
class mynumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = mynumbers()
myiter = iter(myclass)
在 python 中,使用了 yield 的函式被稱為生成器(generator)。
跟普通函式不同的是,生成器是乙個 返回迭代器的函式,只能用於 迭代操作,更簡單點理解生成器就是乙個 迭代器。
在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。
呼叫乙個生成器函式,返回的是乙個迭代器物件。
import sys
def fibonacci(n): # 生成器函式 - 斐波那契
a, b, counter = 0, 1, 0
while true:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是乙個迭代器,由生成器返回生成
while true:
try:
print (next(f), end=" ")
except stopiteration:
sys.exit()
python基礎 迭代器與生成器
迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器。list 1 2,3 4 it iter list 建...
python基礎 迭代器 與 生成器
迭代器1.是一種訪問集合元素的方式。2.可以記住遍歷位置 3.從集合的第乙個元素開始訪問,到最後乙個元素訪問完結束。不能後退。4.兩個基本方法 iter 和 next 也可以理解為有這兩個方法就是迭代器 5.字串 列表 元組 都可以用於建立迭代器 6.支援用for進行遍歷 list1 2,4,543...
Python生成器與迭代器
生成器只有在用的時候會出現在記憶體中,對比列表全部存在記憶體中,減少了記憶體占用 next 函式 依次取生成器的值 s x 2 for x in range 1000 中括號是列表解析,小括號表示生成一系列值,就是生成器 s at 0x7fa20aa8b048 print next s 用next ...