十二 迭代器和生成器

2022-09-02 13:57:10 字數 635 閱讀 6678

迭代器:以list為例

>>> help(list.__iter__)

__iter__(self, /)

implement iter(self).

內部乙個資料結構裡面,如果還有下乙個,把下乙個拿給你,直到沒有下乙個了,迭代器的內部會執行next方法

>>> a = [1,2,3,4,5,6,7,8]

>>> iter(a)

>>> for i in iter(a):print (i)12

3456

78生成器:

range不是生成器 xrange是生成器

readlines不是生成器 xreadlines是生成器

>>> range(1000000)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9。。。。。。。。。]

>>> xrange(1000000)

xrange(10000000)

總結:以上面為例:

>>> range(1000000),它會在記憶體裡不停的活動

>>> xrange(1000000),你建立多少都無所謂,我就是在記憶體裡放著,你什麼時候要用的時候我再建立

生成器內部基於yield建立,即:對於生成器只有使用時才建立,從而不避免記憶體浪費

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...