亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

海安县| 长乐市| 临沭县| 新宁县| 炉霍县| 马龙县| 都兰县| 新竹县| 嵩明县| 建始县| 鄂伦春自治旗| 慈利县| 克山县| 吉隆县| 稻城县| 芜湖市| 清徐县| 平果县| 海安县| 京山县| 南郑县| 平陆县| 会理县| 旬邑县| 开原市| 无锡市| 桂阳县| 平利县| 遵义县| 白玉县| 峡江县| 陈巴尔虎旗| 广宁县| 临桂县| 即墨市| 二连浩特市| 恩施市| 庆元县| 奈曼旗| 东方市| 建阳市|