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

 

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

相似点

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

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

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

 

不同点

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

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

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

上一篇:glsl glDrawElements实例(C语言)


下一篇:Gammatone 滤波器的 Python 代码实现