迭代器和生成器 python3入門

2022-06-16 15:09:11 字數 1409 閱讀 2182

#可迭代的物件:但凡資料型別可以執行__iter__()

# ''.__iter__()

# .__iter__()

# (1,2).__iter__()

# .__iter__()

# .__iter__()

# open('a.txt').__iter__()

#呼叫可迭代物件的__iter__()方法,會得到乙個返回值,該返回值就是迭代器物件

#迭代器物件:既內建有__iter__()方法,又內建又__next__()方法.例如:檔案本身就是迭代器物件

#迭代器總結:

#優點:1,提供了一種不依賴索引的迭代器取值方式

# 2,迭代器中不包含任何值,占用空間極小

#缺點:1,一次性,只能取乙個,依此往後,無法**迭代器物件中值的個數

# 2,無法取得指定的值,不如按索引/key 取值靈活

例如:# dic =

# iter_dic = dic.values().__iter__()

# print(iter_dic,type(iter_dic))##

## try:

# print(iter_dic.__next__())

# print(iter_dic.__next__())

# print(iter_dic.__next__())

# print(iter_dic.__next__())

# except:stopiteration

# dic =

# iter_dic = iter(dic)

# while 1:

# try:

# print(next(iter_dic))

# except stopiteration:break

#生成器是一種自定義的迭代器

#在函式中但凡出現yield關鍵字,然後呼叫函式不會立即執行函式體**,會得到乙個返回值,該返回值稱之為生成器

#即自定義的迭代器

#總結#yield提供了一種迭代器的解決方案

#yield對比return,相同點:都能返回值,並且返回值沒有型別和個數限制

# 不同點:yield可以返回多次值,而return只能返回一次值

def my_range(start,stop,step):

while start < stop:

yield start

start += step

res = my_range(1,10001,2)

while 1:

try:

print(next(res))

except stopiteration:break

Python3 迭代器和生成器

1.迭代器 iterator 迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和next list 1,2,3,4 it iter list 建立迭代器物件 for x in it ne...

Python3 迭代器與生成器

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1 2,3 ...

python3 迭代器與生成器

生成器yield 在python中,使用了yield的函式被稱為生成器 generator 跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。在呼叫生成器的執行過程中,每次遇到yield時函式會暫停並儲存當前所有執行資訊,返回yield的值。並在下...