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