首页 > 编程 > Python > 正文

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

2019-11-14 17:50:25
字体:
来源:转载
供稿:网友

 

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

相似点

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

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

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

 

不同点

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

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表