【乾貨】Python中的生成器對象和迭代器對象

Python 中的生成器對象和迭代器對象都是可以在循環中逐個返回值的對象,它們遵循迭代器協議,也就是說,它們都有 iter() 和 next() 方法。

生成器對象是一種特殊的迭代器對象,它是由生成器函數或生成器表達式創建的,它可以動態地生成值,而不是一次性地返回所有的值。

Python 中有一些內置的生成器對象

  • range() 函數返回一個 range 對象,它是一個整數序列的生成器。
  • enumerate() 函數返回一個 enumerate 對象,它是一個帶索引的可迭代對象的生成器。
  • zip() 函數返回一個 zip 對象,它是一個將多個可迭代對象打包成元組的生成器。
  • map() 函數返回一個 map 對象,它是一個將函數應用於可迭代對象中每個元素的生成器。
  • filter() 函數返回一個 filter 對象,它是一個根據函數過濾可迭代對象中元素的生成器。
  • reversed() 函數返回一個 reversed 對象,它是一個將可迭代對象中元素反向排列的生成器。

Python 中也有一些內置的迭代器對象

  • iter() 函數可以將任何可迭代對象轉換為迭代器對象。
  • file 對象是一種可以逐行讀取文件內容的迭代器對象。
  • collections 模塊中提供了一些高級的迭代器對象,例如 deque, Counter, OrderedDict, defaultdict, namedtuple 等。