迭代器和生成器
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...