Python學習筆記 - 迭代器和生成器

MADAO是不會開花的發表於2019-01-03

一. 迭代器

  • 可迭代物件:可以使用for迴圈的物件叫做可迭代物件。例子:

    for i in [1, 2, 3]:
        print(i)
        
    test_dict = {'name': 'allen', 'age': 17}
    for key, value in test_dict.items():
        print(key, value)
    複製程式碼
  • 迭代器:可以被next()函式呼叫並不斷返回下一個值的物件稱為迭代器。

  • iter:列表,字典都可以叫做可迭代物件,但是他們不是迭代器,如果要將它們變成迭代器,就要使用iter()函式,例子:

    test_list = [1,2,3,4]
    
    iter_test_list = iter(test_list)
    
    print(next(iter_test_list))
    print(next(iter_test_list))
    print(next(iter_test_list))
    print(next(iter_test_list))
    print(next(iter_test_list))
    
    複製程式碼

    Python學習筆記 - 迭代器和生成器

    每次呼叫next函式,迭代器會返回下一個值,如果下一個值沒有,那麼就會報錯。

二. 生成器

生成器是一個返回迭代器的函式,在Python中使用了 yield 的函式被稱為生成器。

range函式可以生成一個整數序列,但是它的step(步長)引數,只能是整數。如果想要step為浮點數要怎麼實現?

# 實現

def float_range(start, stop, step):
    x = start
    while x < stop:
        yield x
        x += step
複製程式碼

Python學習筆記 - 迭代器和生成器

注意例子中的yield關鍵字,在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。

相關文章