Python可迭代對(duì)象操作示例
本文實(shí)例講述了Python可迭代對(duì)象。分享給大家供大家參考,具體如下:
1、列表生成式
list = [result for x in range(m, n)] g1 = (i for i in range(101)) print(type(g1)) print(g1) print(g1.__next__())
輸出:
<class 'generator'>
<generator object <genexpr> at 0x0000024E6AC08F10>
0
g1 = (i for i in range(11)) list1 = [i for i in g1] print(list1)
輸出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、可迭代對(duì)象
①.可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象,我們稱之為:Iterator
②.我們可以使用isintance()判斷一個(gè)對(duì)象是否是Iterator對(duì)象
③.可以直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種
a.集合數(shù)據(jù)類型:如list、tuple、dict、set和string
b.生成器(generator):就是一個(gè)能返回迭代器的函數(shù),其實(shí)就是定義一個(gè)迭代算法,可以理解為一個(gè)特殊的迭代器。
生成器:
通過列表生成式,我們可以直接創(chuàng)建一個(gè)列表,但是,受到內(nèi)存限制,列表容量肯定是有限的,如果我們僅僅需要訪問前面幾個(gè)元素,如果列表元素可以按照某種算法推算出來,那我們是否可以在循環(huán)的過程中不斷推算出后續(xù)的元素呢?這樣就不必創(chuàng)建完整的list,從而節(jié)省大量的空間。在Python中,這種一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器(Generator)
要?jiǎng)?chuàng)建一個(gè)generator,有很多種方法。第一種方法很簡(jiǎn)單,只要把一個(gè)列表生成式的[]改成(),就創(chuàng)建了一個(gè)generator。
g1 = (i for i in range(11)) print(g1) for i in range(11): print(next(g1),end='\t')
輸出:
<generator object <genexpr> at 0x00000207F5C69678>
0 1 2 3 4 5 6 7 8 9 10
注意:使用Iterator判斷的時(shí)候需要導(dǎo)入Iterable的包
from collections import Iterable print(isinstance([],Iterable)) print(isinstance((),Iterable)) print(isinstance("",Iterable)) print(isinstance({},Iterable)) print(isinstance({1,2,3},Iterable)) print({1,2,3}) print(isinstance(1,Iterable)) print(isinstance(1.2,Iterable)) g1 = (i for i in range(101)) print(isinstance(g1,Iterable))
輸出:
True
True
True
True
True
{1, 2, 3}
False
False
True
3、迭代器
迭代器:不但可以作用于for循環(huán),還可以被next()函數(shù)不斷調(diào)用并返回下一個(gè)值,
直到最后出現(xiàn)StopIteration錯(cuò)誤,表示無法返回下一個(gè)值
可以被next()
函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器(Iterator對(duì)象)
可以使用isinstance()函數(shù)判斷一個(gè)對(duì)象是否是Iterator對(duì)象。
注意:可迭代對(duì)象不一定是迭代器,但是迭代器一定是迭代對(duì)象。
可迭代對(duì)象與迭代器的關(guān)系:
可迭代對(duì)象包含迭代器
from collections import Iterator print(isinstance([],Iterator)) print(isinstance((),Iterator)) print(isinstance("",Iterator)) print(isinstance({},Iterator)) print(isinstance({1,2,3},Iterator)) print({1,2,3}) print(isinstance(1,Iterator)) print(isinstance(1.2,Iterator)) g1 = (i for i in range(101)) print(isinstance(g1,Iterator))
輸出:
False
False
False
False
False
{1, 2, 3}
False
False
True
4、 Iterator轉(zhuǎn)換
可以通過Iter()
函數(shù)將list、tuple、dict、string轉(zhuǎn)換為Iterator對(duì)象。
from collections import Iterator list1 = [i for i in range(11)] print(isinstance(list1,Iterator)) iter1 = iter(list1) print(isinstance(iter1,Iterator)) for i in range(11): print(next(iter1),end='\t')
輸出:
False
True
0 1 2 3 4 5 6 7 8 9 10
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- python生成器,可迭代對(duì)象,迭代器區(qū)別和聯(lián)系
- 淺談Python中的可迭代對(duì)象、迭代器、For循環(huán)工作機(jī)制、生成器
- python中的迭代和可迭代對(duì)象代碼示例
- python使用生成器實(shí)現(xiàn)可迭代對(duì)象
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從任意長(zhǎng)度的可迭代對(duì)象中分解元素操作示例
- ES6 迭代器與可迭代對(duì)象的實(shí)現(xiàn)
- 詳解Python中的內(nèi)建函數(shù),可迭代對(duì)象,迭代器
- 一篇文章弄懂Python中的可迭代對(duì)象、迭代器和生成器
相關(guān)文章
Python實(shí)現(xiàn)封裝打包自己寫的代碼,被python import
這篇文章主要介紹了Python實(shí)現(xiàn)封裝打包自己寫的代碼,被python import,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07python爬蟲MeterSphere平臺(tái)執(zhí)行報(bào)告使用實(shí)戰(zhàn)
這篇文章主要為大家介紹了python爬蟲MeterSphere平臺(tái)執(zhí)行報(bào)告使用實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12使用Python的Django框架結(jié)合jQuery實(shí)現(xiàn)AJAX購物車頁面
這篇文章主要介紹了使用Python的Django框架結(jié)合jQuery實(shí)現(xiàn)AJAX購物車頁面的方法,示例基于Django中構(gòu)建好的JSON格式的RESTful API需要的朋友可以參考下2016-04-04深入淺析python 協(xié)程與go協(xié)程的區(qū)別
這篇文章主要介紹了python 協(xié)程與go協(xié)程的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05selenium設(shè)置proxy、headers的方法(phantomjs、Chrome、Firefox)
這篇文章主要介紹了selenium設(shè)置proxy、headers的方法(phantomjs、Chrome、Firefox),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11Python數(shù)字圖像處理之霍夫線變換實(shí)現(xiàn)詳解
這篇文章主要介紹了Python數(shù)字圖像處理之霍夫線變換實(shí)現(xiàn)詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01pytorch?K折交叉驗(yàn)證過程說明及實(shí)現(xiàn)方式
這篇文章主要介紹了pytorch?K折交叉驗(yàn)證過程說明及實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11