python迭代器以及生成器

2022-06-11 05:39:07 字數 1433 閱讀 5178

iter()迭代器

每一次輸出下乙個值

>>> a=iter(range(10))

>>> a.next()

>>> a.next()

>>> a.next()

可以用捕獲異常來排除超出迭代範圍,或者判斷長度

>>> try:

...     1/0

... except:

...     print "error occur"

...error occur

如:#encoding=utf-8

a=iter(range(10))

while 1:

try:

print a.next()

except:

print "error"

演算法1

#encoding=utf-8

a=[1,2,3,4,5,6]

d={}

for i in range(0,(len(a)-1),2):

print "i:",i

d[a[i]]=a[i+1]

print d

演算法2

#encoding=utf-8

a=[1,2,3,4,5,6]

d={}

c=iter(a)

for i in range(len(a)/2):

k=c.next()

v=c.next()

d[k]=v

print d

#encoding=utf-8

class myrange(object):

def __init__(self,n):

self.idx=0

self.n=n

def __iter__(self):

return self

def next(self):

if self.idx結果:

也節省記憶體

b=(x*x for x in range(10))

用b.next()迭代列表中的元素

類似於迭代器

def odd():

print 'step 1'

yield 1

print 'step 2'

yield 3

print 'step 3'

yield 5

o = odd()

print o.next()

print o.next()

print o.next()

print o.next()

迭代器用iter(),

生成器可以用圓括號,或者用yield生成

Python 迭代器 生成器

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

python 迭代器,生成器

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

python 迭代器 生成器

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