迭代器
可迭代物件: 字串 元組 列表 字典 生成器和帶yield的生成器函式。
如何判讀物件是否可迭代:isinstance(物件,iterable)
如何判讀物件是否是迭代器:isinstance(物件,iterator)
如何生成可迭代物件的迭代器:iter(可迭代物件)
注意:可迭代物件不一定是迭代器,但是迭代器一定是可迭代物件。
from collections import iterable
from collections import iterator
a= "abc"
b=12
c=[11,23,32]
d=(12,21,21)
e=x= (x for x in range(1,20) if x%2==0)
#判斷物件是否可迭代
print(isinstance(a,iterable),isinstance(b,iterable),isinstance(c,iterable),
isinstance(d,iterable),isinstance(e,iterable),isinstance(x,iterable))
#判斷物件是否是迭代器,即被next()呼叫
print(isinstance(a,iterator),isinstance(b,iterator),isinstance(c,iterator),
isinstance(d,iterator),isinstance(e,iterator),isinstance(x,iterator))
#生成迭代器的方法 iter()
iter_a = iter(a)
print(next(iter_a))
print(next(iter_a))
print(next(iter_a))
print(next(iter_a))
生成器
使用場景:當需要建立大量資料的列表的時候,比如100000條記錄的列表,很顯然一次全部建立到記憶體當中是一件特別消耗記憶體的事情。生成器就是通過封裝的演算法進行邊迴圈邊計算的機制。
兩種建立生成器的方法:
1.通列表解析語法,但是要把換成()即可。
>>> li=[x for x in range(1,20) if x%2==0]
>>> li
[2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> type(li)
>>> gen=(x for x in range(1,100) if x%2==0)
>>> gen
at 0x7fb2f613f360>
>>> type(gen)
>>> next(gen)
2>>> next(gen)
4>>> next(gen)
6
2.通過帶yield的函式
呼叫帶yield的生成器函式,返回的是乙個生成器物件,此時函式並未執行。當呼叫next(生成器物件)的時候,函式開始執行,碰到yield語句函式暫停並返回yield物件後面的值。
>>> def genfunc():
... print('---function start---')
... for x in range(1,100):
... print('-----begin in for----')
... yield x
... print('-----get one x:----'+str(x))
... print('-----funtion end-----')
...
>>> genfun = genfunc()
>>> next(genfun)
---function start---
-----begin in for----
1>>> next(genfun)
-----get one x:----1
-----begin in for----
2>>> next(genfun)
-----get one x:----2
-----begin in for----
3>>> next(genfun)
-----get one x:----3
-----begin in for----
4
send函式呼叫帶yield的生成器函式,與next功能相似,同時給yield語句附乙個返回值。如下:
>>> def genfunc():
... for i in range(0,10):
... temp=yield i
... print('------'+str(temp)+'-----')
...
>>> gen = genfunc()
>>> gen.__next__()
0>>> gen.send('test')
------test-----
1>>> next(gen)
------none-----
2
NHibernate基礎拾遺
configuration 用於配置並啟動nhibernate,通過此例項來獲取物件關係對映檔案中的元資料 可以通過此例項動態配置nhibernate的屬性 此例項可以建立sessionfactory sessionfactory 乙個這個型別的例項對應乙個資料儲存源 可以建立session的例項 ...
NHibernate基礎拾遺
configuration 用於配置並啟動nhibernate,通過此例項來獲取物件關係對映檔案中的元資料 可以通過此例項動態配置nhibernate的屬性 此例項可以建立sessionfactory sessionfactory 乙個這個型別的例項對應乙個資料儲存源 可以建立session的例項 ...
javascript基礎拾遺 二
1.物件定義 定義屬性 var language console.log language.name console.log language.score 定義方法 var language console.log language.name console.log language.score c...