1. 底层核心工具(真正干活的)
__next__() 去消费数据:for 循环:最强大的迭代工具,它会自动处理 StopIteration 异常,帮你优雅地遍历。next() 函数:最直接的迭代工具,手动从迭代器中提取下一个元素。a, b, c = my_iterator,Python 底层也会自动调用 next() 来逐个获取数据。2. 内置高阶函数(边迭代边处理)
map(function, iterable):对迭代器中的每个元素应用指定函数。filter(function, iterable):根据函数返回的布尔值,筛选迭代器中的元素。zip(*iterables):并行迭代多个可迭代对象,将它们打包成元组。enumerate(iterable):在迭代的同时,自动附加一个递增的索引(计数器)。sorted(iterable) / list(iterable) / tuple(iterable):这些是“贪婪”的迭代工具,它们会一次性把迭代器里的数据全部“榨干”并收集起来。像 map、zip、filter 这些内置函数,它们就像流水线上的工人,一边消费上游的数据,一边生产下游的数据。它们自己本身也是一个迭代器(实现了 __next__),完美地做到了“边迭代边处理”,并且极其节省内存。
其实 Python 里还有一种叫“生成器表达式”的东西(比如 (x*2 for x in range(1000000))),它连 map 的包装都省了,直接就能实现这种流水线
__next__:无论是 for 循环、list() 转换、还是 map() 内部,它们干活的唯一手段就是调用 __next__()。、for 只是自动化__next__() 的 while 循环:它帮你省去了手动写 while、手动写 try...except StopIteration 的繁琐,让你能优雅、安全地消费数据。