生成器表达式与列表解析非常类似,但它并不真正创建数字列表,而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来。生成器表达式使用了“延迟计算”(lazy evaluation) ,所以它在使用内存上更有效。
(expr for iter_var in iterable if cond_expr)举例:
寻找文件最长的行f = open('etc/motd', 'r')longest = max(len(x.strip()) for x in f)f.close()return longest
return max(len(x.strip()) for x in open('/etc/motd'))
摘自《Python核心编程》