Skip to content

[Python] 使用 next() 函式讀取可迭代物件的元素

Last Updated on 2021-09-20 by Clay

最近我在使用研究某個專案的原始碼時,看到了在迭代物件時使用 next() 函式來取值的方法。一開始很疑惑 Python 真的是否存在這個函式、想說會不會是開發專案的開發者自己定義的 —— 不過後來發現,這真的是 Python 內建的函式。

以下就簡單紀錄 next() 函式的用途、以及經常一同使用的 iter() 函式。


next() 的使用方法

基本上,next() 函式會返回『迭代物件』的下一個元素,故我們若有許多元素儲存在 List 或是 Tuple 並想要使用 next() 函式讀出,則需使用 iter() 函式將其轉成可迭代物件。

# coding: utf-8


def main():
    data = [1, 2, 3, 4, 5]
    data = iter(data)

    print(next(data))
    print(next(data))
    print(next(data))


if __name__ == '__main__':
    main()



Output:

1
2
3

可以發現,next() 會將迭代物件的元素逐項讀出。

若是在 next() 中再指定一個元素,則會成為預設元素,若是使用 next() 讀去的迭代物件為空時,則會讀出預設值。

# coding: utf-8


def main():
    data = [1, 2, 3, 4, 5]
    data = iter(data)

    for _ in range(10):
        print(next(data, 777))


if __name__ == '__main__':
    main()



Output:

1
2
3
4
5
777
777
777
777
777

就像以上的程式一樣。若是沒有指定預設值而讀到空物件,則會拋出 StopIteration 的錯誤訊息。


References


Read More

Tags:

Leave a Reply取消回覆

Exit mobile version