链式python生成器表达式如何过滤?

时间:2014-01-30 16:18:40

标签: generator for-comprehension

我正在尝试链接生成器,以便我可以将大型CSV文件作为行流处理,而不是批量执行每个操作。

这样,我可以延迟每一步的每次迭代,避免在内存中加载整个数据集。

生成器表达式工作正常,除非我尝试使用if语句过滤输出。

这样做:一次只消耗一次迭代

file_iterable = open("myfile.csv")
parsed_csv_iterable = (parse_i(i) for i in file_iterable)

然后我可以通过在生成的iterable上调用next()来一次获得一行。但是,如果我这样做

file_iterable = open("myfile.csv")
parsed_csv_iterable = (parse_i(i) for i in file_iterable if parse_i(i)[0] in [1,2,3])

然后,迭代器继续运行直到耗尽。为什么?什么是解决方法?

0 个答案:

没有答案