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
- https://www.programiz.com/python-programming/methods/built-in/next
- https://www.w3schools.com/python/ref_func_next.asp
- https://www.geeksforgeeks.org/python-next-method/