迭代器——它可以像list那樣被遍歷,但又不占用多少記憶體
1.迭代器是乙個可以記住遍歷的位置的物件。
2.迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
3.迭代器有兩個基本的方法:iter()和next()。
生成器——是一種特殊的迭代器,只能被遍歷一次,遍歷結束,就自動消失了
1.使用了 yield 的函式被稱為生成器(generator),返回迭代器,只能用於迭代操作
2.在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下
一次執行 next() 方法時從當前位置繼續執行。
總之,不管是迭代器還是生成器,都是為了避免使用list,從而節省記憶體。
import sys
#迭代器避免列表太大導致直接全部載入占用較多記憶體
a=[1,2,3,5,4,6,7]
# 構造迭代器
b=iter(a)
# 通過迴圈訪問迭代器
for i in b:
print(i)
print("迭代器訪問結束")
# 通過next()訪問迭代器
while true:
try:
print (next(b))
except stopiteration:
sys.exit()
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迭代器和生成器
先說迭代器,對於string list dict tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter 函式,iter 是python的內建函式。iter 會返回乙個定義了next 方法的迭代器物件,它在容器中逐個訪問容器內元素,next 也是python的...
Python迭代器和生成器
迭代器是訪問集合元素的一種方法 是可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問 他有兩個基本的方法,iter 和next 字串,列表或遠足物件都可以用於建立迭代器 list1 1,2,3,4 it1 iter list1 建立迭代器物件 print next ...
python 迭代器和生成器
迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可...