python 迭代器與生成器

2021-08-15 09:11:47 字數 1960 閱讀 8381

迭代器和生成器

print(1 in[1,2,3])

print(1 not in[1,2,3])

print(4 in)

print(4 not in(1,2,3))

print('x' not in 'dlkjfxfei')

可迭代物件(iterable)

可以被next()函式呼叫並不斷返回下乙個值

知道沒有資料時丟擲stopiteration錯誤的物件稱之為迭代器,即

iterator

l=(1,2,3)

print(type(l))

l=iter(l)

print(type(l))

for i in l:

print(i)

print(next(l))

a,b,c=1,2,3

print(a+b)

print(next(l))

print(next(l))

print(next(l))

iter(可迭代物件

) ===>

迭代器--->iterator

迭代器內部持有乙個狀態,該狀態用於記錄當前迭代所在的位置,

以便於下次迭代的時候獲取正確的元素。

斐波那契數列(fibonacci)演示 迭代器和生成器

def fab(max):

n,a,b=0,0,1

l=while n < max:

print(b)

a,b=b,a+b

n=n+1;

return l;

l= fab(10)

for i in l:

print(i)

for i in range(1001):

print(i)

可迭代類即

class fab(object):

def __init__(self,max):

self.max=max;

self.n, self.a, self.b=0,0,1;

def __iter__(self):

return self;

def __next__(self):

if self.nr= self.b;

self.a,self.b=self.b,self.a+self.b;

self.n+=1;

return r;

raise stopiteration();

f=fab(10);

for i in f:

print(i)

print(next(f));

print(next(f));

print(next(f));

print(next(f));

print(next(f));

print(next(f));

生成器

是特殊的迭代器,只需要乙個yiled關鍵字。

生成器的返回值不是通過return而是

yield

def fab(max):

n,a,b=0,0,1

l=while n < max:

yield b

a,b=b,a+b

n=n+1;

l= fab(10)

for i in l:

print(i)

class ***exception(exception):

pass

def input***():

***=input('請輸入性別:')

if ***!='男

' and ***!='女':

raise ***exception("性別只能是男 或 女")

print('輸入的性別:

',***)

try:

input***()

except ***exception as s:

print(s)

Python生成器與迭代器

生成器只有在用的時候會出現在記憶體中,對比列表全部存在記憶體中,減少了記憶體占用 next 函式 依次取生成器的值 s x 2 for x in range 1000 中括號是列表解析,小括號表示生成一系列值,就是生成器 s at 0x7fa20aa8b048 print next s 用next ...

Python 迭代器與生成器

一 迭代器 理解迭代器需要搞清楚容器 container 迭代器協議 可迭代物件 iterable 迭代器 iterator 生成器 generator 1 容器 container 容器是一種把多個元素組織在一起的資料結構,容器中的元素可以逐個地迭代獲取,可以用in,not in關鍵字判斷元素是否...

python 迭代器與生成器

迭代就像是遍歷,迭代只能乙個個往下獲取,不能往上獲取,需使用iter函式。name是乙個包含元素cc,dd,ee的迭代器 name iter cc dd ee 訪問迭代器中的元素需使用next方法 print name.next cc print name.next dd print name.ne...