uniapp对象怎么获取值_第65p,关于:生成器、迭代器与迭代对象(上)
大家好,我是楊數(shù)Tos,這是《從零基礎(chǔ)到大神》系列課程的第65篇文章,第三階段的課程:Python進階知識:生成器、迭代器與迭代對象。
一、什么是可迭代對象?
迭代是一個重復(fù)的過程,迭代每次的重復(fù)都是基于上一次的結(jié)果;如果單純的重復(fù)并不是迭代;
下面這張圖片會用一個簡單的案例說明迭代與循環(huán)的區(qū)別:
由于可迭代對象是一種比較抽象的概念,我們可以用這樣的方式區(qū)分可迭代對象;在Python中只要內(nèi)置有__iter__()方法的對象都稱之為可迭代對象。
二、迭代器?
1、什么是迭代器?
器是工具,迭代器指的是迭代取值的工具。
2、為什么會有迭代器?
如果我們使用索引取值的方式獲取對象內(nèi)的元素,可以獲取到對象內(nèi)所有元素的值;但是,對于一些沒有索引的對象,如字典,通過索引取值的方式是無法獲取字典中元素的值;
為了解決基于索引取值的局限性,Python提出了一種迭代取值的方式,這就是迭代器(iterator);只要是可迭代對象,都能進行迭代取值;
調(diào)用可迭代對象下的__iter__方法,可以得到該迭代對象的迭代器對象,即:可迭代對象可以轉(zhuǎn)換成迭代器對象。
將可迭代對象轉(zhuǎn)成迭代器對象以后,迭代器對象內(nèi)有一種__next__()方法,使用__next__()方法就可以進行迭代取值。每執(zhí)行一次__next__()方法就能取得迭代器中的返回值;當?shù)鞯闹当蝗⊥?#xff0c;再次取值會發(fā)出報錯信息。
3、可迭代對象與迭代器的不同:
可迭代對象只能通過索引取值的方式(即:__iter__()方法);迭代器對象不僅可以通過索引取值,也可以通過__next__()方法取值;
4、用for循環(huán)的工作原理說明迭代器:
① 將被循環(huán)的數(shù)據(jù)調(diào)用__iter__()方法,將數(shù)據(jù)轉(zhuǎn)換成為迭代器對象,如果數(shù)據(jù)本身是迭代器對象,調(diào)用__iter__()方法也是在調(diào)用迭代器本身,并沒有發(fā)生任何變體;
② 基于迭代器對象,調(diào)用__next__()方法進行迭代取值,拿到__next__()的返回值;
③ 將返回值賦值給i
④ 循環(huán)往復(fù)以上步驟,迭代器對象只的值被取盡,拋出StopIteration異常,for循環(huán)會捕捉異常并結(jié)束循環(huán)。
所以while循環(huán)可以稱為條件循環(huán),for循環(huán)可以稱為迭代器循環(huán)。
只要是迭代器對象都相當于執(zhí)行了for循環(huán);所以我們在進行數(shù)據(jù)類型轉(zhuǎn)換的時候,如果字符串轉(zhuǎn)換成列表x = list(str),這里調(diào)用了list方法其實就是調(diào)用了迭代器對象進行了for循環(huán),所以會將字符串打散成一個個字符,變成列表(list)中的一個元素。
如:list(“楊數(shù)Tos”)與for的原理相同,得到的結(jié)果是:['楊', '數(shù)', 'T', 'o', 's']。
5、迭代器對象優(yōu)缺點總結(jié):
優(yōu)點:
a. 獲得了一種統(tǒng)一取值的方案,不管是有序類型還是無序類型都可以使用同一方法進行取值;
b. 更節(jié)省內(nèi)存,數(shù)據(jù)只要被使用時,__next__()方法才會觸發(fā)并生成新的數(shù)據(jù),就像一只生蛋的雞,不用事先把所有的蛋生出來,只有調(diào)用時,才會生出新的蛋;
缺點:
A. 不能索引取值這樣,可以取指定的值,比如取第3個值,使用索引取值可以直接獲取,使用迭代器必須先把前兩個值取出來 ,才能獲取到第3個值。
B. 迭代器具有生命周期,迭代器內(nèi)的值取完以后,再次取值會發(fā)生報錯。
C. 除非迭代器內(nèi)的值被取盡,否則無法獲取迭代器的長度。
D. 只能取下一個值,不能回到開始,
以上是本期內(nèi)容,如果有表達不對的內(nèi)容,歡迎您的留言、斧正,我們一起天天向上。
感謝您的閱讀,您的三連【關(guān)注、點贊、收藏】就是對我最大的支持,謝謝!
本文由楊數(shù)Tos原創(chuàng),歡迎關(guān)注,帶你一起長知識。
總結(jié)
以上是生活随笔為你收集整理的uniapp对象怎么获取值_第65p,关于:生成器、迭代器与迭代对象(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓机高的地图要用浏览器打开_浏览器F1
- 下一篇: win98 老电脑 文件导出_首次装电脑