迭代器 生成器

2022-07-26 03:39:14 字數 912 閱讀 4789

# 通過迭代器取值優缺點:

​# 優點:不依賴索引,完成取值

# 缺點:不能計算長度,不能指定位取值(只能從前往後逐一取值)

可迭代物件

可迭代物件: 有__iter__()方法的物件,呼叫該方法返回迭代器物件

​有哪些:str | list | tuple | dict | set | range() | file | 迭代器物件 | enumerate() | 生成器

迭代器物件

迭代器物件: 有__next__()方法的物件,也就是用該方法一次從迭代器物件中獲取乙個值,取出乙個少乙個

​有哪些:file | enumerate() | 生成器

​重點:

1.從迭代器物件中取元素,取乙個少乙個,如果要從頭開始去,需要重新獲得擁有所有元素的迭代器物件

2.迭代器物件也有__iter__()方法,呼叫後得到的是自己本身(當前含義幾個元素,得到的就只有幾個元素的迭代器物件)

for迴圈迭代

1.自動獲取被迭代物件的迭代器物件

2.在內部一次一次呼叫__next__()方法取值;

3.自動完成異常處理

生成器:包含yield關鍵字的函式就是生成器

def my_generator():

yield 1

yield 2

yield 3

g_obj = my_generator()

# my_generator()並不會執行函式體,得到的返回值就是生成器物件

# 生成器物件就是迭代器物件

r1 = g_obj.__next__() # 1

for v in g_obj:

print(v)  # 2 | 3

生成器 迭代器

最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...

迭代器,生成器

迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...

迭代器 生成器

迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...