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 等。