python基礎 迭代器與生成器

2022-09-06 22:33:26 字數 1693 閱讀 1323

迭代是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 ...