python生成器和迭代器

2021-09-29 10:33:44 字數 1152 閱讀 1064

迭代器——它可以像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 迭代器和生成器

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可...