haibaraxx的个人博客分享 http://blog.sciencenet.cn/u/haibaraxx

博文

Python: 列表解析和生成器表达式

已有 10372 次阅读 2017-6-14 04:22 |个人分类:Python|系统分类:科研笔记| 列表解析, 生成器表达式

列表解析(List comprehensions)

列表解析式是将一个可迭代对象(如列表)转换成另一个列表的工具。在转换过程中,可以指定元素必须符合某一条件,并按照指定的表达式进行转换,才能添加至新的列表中。

语法:

[expression for iter_var in iterable1]


[expression for iter_var2 in iterable2 ...

                   for iter_varN in iterableN]


[expression for iter_var in iterable1

                    if condition]

执行:

迭代iterable中所有的元素,每一次迭代都把iterable中的内容放到iter_var对象中,然后把这个对象应用到表达式expression中,生成一个列表。

带嵌套循环(nested loop)的列表解析式

e.g. 一个拉平(flattened)矩阵(以列表为元素的列表)的for循环及其改为列表解析的形式:

注:如果要在列表解析式中处理嵌套循环,则列表解析式中for循环子句的顺序与原来的for循环语句的顺序一致。


生成器表达式(Generator expressions)

不创建列表,只是返回一个生成器。这个生成器在每次计算出一个条目后,才把这个条目产生出来。所以在处理大量数据时更有优势。

语法:

(expression for iter_var in iterable1)


(expression for iter_var2 in iterable2 ...

                   for iter_varN in iterableN)


(expression for iter_var in iterable1

                    if condition)

执行:

迭代iterable中所有的元素,每一次迭代都把iterable中的内容放到iter_var对象中,然后把这个对象应用到表达式expression中,生成一个生成器。






https://blog.sciencenet.cn/blog-3031432-1060628.html

上一篇:Python:列表和列表方法
下一篇:Python:元组
收藏 IP: 95.90.225.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-10 11:46

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部