初學python隨筆——清單產生器、產生器和迭代器

來源:互聯網
上載者:User

標籤:lis   exp   range   ble   pre   隨筆   for迴圈   使用   迭代器   

清單產生器
# 常見的是range()建立一個數位列表>>>[ x*x for x in range(10)][0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 後邊也可以加上判斷語句>>>[ x*x for x in range(10) if x%2 == 0][0, 4, 16, 36, 64]# 字元也可以這麼玩>>> [m + n for m in ‘ABC‘ for n in ‘XYZ‘][‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]

  

產生器
# 產生器就是把清單產生器的[]換成(),或者在函數中使用yield關鍵字>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x1022ef630># 取值,可以使用next(),但大多數使用for# 斐波拉契數列def fib(max):    n,a,b = 0,0,1    while n < max:        #print(b)        yield  b        a,b = b,a+b        n += 1    return ‘done‘ # 使用for迴圈列印想返回return值,需要捕獲StopIteration錯誤,傳回值包含在StopIteration的value中:

  

可以直接作用於for迴圈的資料類型有以下幾種:

一類是集合資料類型,如listtupledictsetstr等;

一類是generator,包括產生器和帶yield的generator function。

這些可以直接作用於for迴圈的對象統稱為可迭代對象:Iterable

可以被next()函數調用並不斷返回下一個值的對象稱為迭代器:Iterator,它們表示一個惰性計算的序列

 

集合資料類型如listdictstr等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。

可以使用isinstance()判斷一個對象是否是Iterable對象

初學python隨筆——清單產生器、產生器和迭代器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.