用生成器表达式来改写数据量较大的列表推导式

列表推导式的缺点:对于输入序列的每一个值来说都可能要创建仅含一项元素的全新列表,当输入的数据多时,会损耗大量内存,可能引起奔溃。

生成器表达式在运行时,不会把整个序列都呈现出来,而会估值为迭代器,每次调用生成一项数据。同时两个生成器表达式可以连锁使用,迅速执行,可以用来处理大量数据,如:

>>> it = (len(x)  for x in open('/tmp/my_file.txt'))

>>> root = ((x,x**0.5) for x in it)

使用生成器表达式要注意的是,它是有状态的,用过一次之后不能重复使用。

你可能感兴趣的:(用生成器表达式来改写数据量较大的列表推导式)