Python 的列表解析和生成表达式的异同

 

Python中的列表解析和生成表达式是非常好的特性,他们的形式相似,但是应用场景不太一样。

相似点

列表解析和生成表达式最大的相似点是使用形式:

[expr for iter_var in iterable if cond_expr]        #列表解析
    (expr for iter_var in iterable if cond_expr)        #生成表达式

从形式来看,他们唯一的不同之处是:列表解析使用的是中括号[],生成表达式使用的是圆括号()。

 

不同点

列表解析要完成所有迭代,最后生成一个列表。显然列表解析只适合在列表不大的情况,因为在大数据时这会耗费大量的内存和资源。

生成表达式每次迭代时计算得到一个结果,然后生成器把这个结果产生出来,换句话说,生成表达式只处理一个迭代项,所以更节省内存,更少占用资源。另外有时候我们并不一定要得到一个列表,而只看重中间过程,生成表达式不一定要求生成一个结果。

posted @ 2014-02-20 16:52  野风鼓瑟震山岗  阅读(293)  评论(0编辑  收藏  举报