国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python特性(四):for語句的工作原理

2019-11-08 03:09:17
字體:
來源:轉載
供稿:網友

對于如下的for語句

for obj in iterable_obj:   do something with obj首先會調用iter方法獲取關于iterable_obj對象的迭代器,然后不斷調用迭代器對象的next方法,直至拋出異常位置。

為了說明這一點,看下面的例子。

myiter = MyIterator(1, 4)for i in myiter:    passPRint myiter.next()

上面代碼會拋出StopIteration異常。因為在for語句階段會將myiter迭代器對象的元素全部讀完。MyIterator類的定義參見博文。

到目前位置,我們有三種方式表示一個序列。它們是集合,序列對象和迭代器對象。

集合(如列表,元組,字符串等)中的元素可讀可寫。當然不同的集合類型,可寫的權限有所不同。例如列表中的元素可以隨意添加,刪除,修改。而元組中的元素雖然不能添加、刪除和修改,但是我們可以對兩個元組對象進行連接。當然,連接后會創建新的元組對象。序列對象中的元素可讀但不可寫。在基本的定義中,兩個序列對象也不必支持元組對象那樣的連接操作。這樣的好處是,在有的情況下,我們不必開辟專門的內存空間保存序列對象中的所有元素。迭代器對象中的元素也是可讀不可寫的。但是,迭代器對讀的權限做了一個限制,就是只能從頭至尾讀一遍。迭代器對象的優勢在于它有的時候比序列對象更加靈活。通常情況下,序列對象中的元素順序是不能變的。而對于迭代器對象來說,我們只需要指定不同的next方法,就能實現不同的讀取順序。一個比較經典的例子,就是我們可以實現一個迭代器類,同時支持樹的深度優先和廣度優先遍歷。顯然用迭代器實現這個功能比用序列來實現要簡單許多。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 红安县| 那曲县| 余庆县| 遂溪县| 牟定县| 遵化市| 桐乡市| 澜沧| 凌海市| 玉田县| 新沂市| 麟游县| 宜兴市| 无极县| 白玉县| 施甸县| 南康市| 大港区| 新营市| 鸡东县| 天等县| 彩票| 资阳市| 道孚县| 南乐县| 林西县| 澄城县| 响水县| 田阳县| 西乌| 界首市| 巩义市| 房山区| 都匀市| 区。| 凤山县| 新巴尔虎右旗| 罗田县| 南开区| 山东省| 宣武区|