中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中字典item與iteritems有什么區別

發布時間:2020-07-30 14:47:21 來源:億速云 閱讀:147 作者:小豬 欄目:開發技術

小編這次要給大家分享的是python中字典item與iteritems有什么區別,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

綜述迭代器

對于原生支持隨機訪問的數據結構(如tuple、list),迭代器和經典for循環的索引訪問相比并無優勢,反而丟失了索引值(可以使用內建函數enumerate()找回這個索引值)。但對于無法隨機訪問的數據結構(比如set)而言,迭代器是唯一的訪問元素的方式。

另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之后,元素可以不存在或者被銷毀。這個特點使得它特別適合用于遍歷一些巨大的或是無限的集合,比如幾個G的文件,或是斐波那契數列等等。

迭代器更大的功勞是提供了一個統一的訪問集合的接口,只要定義了iter()方法對象,就可以使用迭代器訪問。

例如:

List = [1,2,3]
L = List.__iter__()
>>> L.next()
1
>>> L.next()
2
>>> L.next()
3

為什么使用迭代器

for i in range(1000): pass
for i in xrange(1000): pass

前一個返回1000個元素的列表,而后一個在每次迭代中返回一個元素,因此可以使用迭代器來解決復用可占空間的問題

class Fab(object): 
 def __init__(self, max): 
 self.max = max
 self.n, self.a, self.b = 0, 0, 1

 def __iter__(self): 
 return self

 def next(self): 
 if self.n < self.max: 
  r = self.b 
  self.a, self.b = self.b, self.a + self.b 
  self.n = self.n + 1
  return r 
 raise StopIteration()

Fab 類通過 next() 不斷返回數列的下一個數,內存占用始終為常數 

示例代碼2

def fab(max):
 n, a, b = 0, 0, 1
 while n < max:
 yield b
 a, b = b, a + b
 n = n = 1

簡單地講,yield 的作用就是把一個函數變成一個 generator,帶有 yield 的函數不再是一個普通函數,Python 解釋器會將其視為一個 generator,調用 fab(5) 不會執行 fab 函數,而是返回一個 iterable 對象!

在 for 循環執行時,每次循環都會執行 fab 函數內部的代碼,執行到 yield b 時,fab 函數就返回一個迭代值,下次迭代時,代碼從 yield b 的下一條語句繼續執行,而函數的本地變量看起來和上次中斷執行前是完全一樣的,于是函數繼續執行,直到再次遇到 yield。

看起來就好像一個函數在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。

看完這篇關于python中字典item與iteritems有什么區別的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大宁县| 兴山县| 重庆市| 康定县| 广宁县| 湖口县| 天镇县| 丰镇市| 明溪县| 寿阳县| 南丰县| 盐津县| 阜新市| 乐陵市| 湖北省| 台北市| 临漳县| 林西县| 五河县| 永修县| 长泰县| 黎城县| 台湾省| 德令哈市| 科技| 竹北市| 嘉禾县| 南陵县| 嘉义县| 花垣县| 澎湖县| 榆林市| 松溪县| 大邑县| 资兴市| 南投市| 郯城县| 龙里县| 定州市| 长垣县| 文山县|