python 迭代器 生成器

2021-09-11 15:44:56 字數 1609 閱讀 9755

**

可迭代物件:可呼叫__iter__()方法的物件,大部分物件都是可迭代的

string='hello world'

print(string.__iter__())

輸出:

容器:•容器是一系列元素的集合,str、list、set、dict、file、sockets物件都可以看作是容器,容器都可以被迭代(用在for,while等語句中),因此他們被稱為可迭代物件。

迭代器:將可迭代物件通過iter方法放入乙個容器中

基本方法:

生成迭代器:iter(iterable_object)

獲取迭代器內資料:iter_generator.next()

生成迭代器:

string='hello world'

it=iter(string)

print(next(it))

print(type(it))

#輸出:

h

迭代器的特點:

迭代器物件從集合的第乙個元素開始訪問,每個元素只能訪問一次,知道結束,無法迴圈訪問,超過可訪問的次數即報錯

string=[1,2,3,4]

it=iter(string)

print(next(it))

print(next(it))

print(next(it))

print(next(it))

print(next(it))

輸出:123

4traceback (most recent call last):

file "c:\users\高頓\desktop\myblog.py", line 7, in print(next(it))

stopiteration

生成器:生成器其實是一種特殊的迭代器

特徵:乙個函式,不用return返回,而用yield返回,返回的是乙個迭代器

#用生成器

def mygenerator():

for i in range(100):

if i >50:

yield i

f=mygenerator()

print(next(f))

輸出:51

*************************************

#用普通函式

def mygenerator():

s=for i in range(100):

if i >50:

return s

f=mygenerator()

print(f)

#輸出:

[51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

可以看出,使用生成器,可以省**,更簡潔。

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...