首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,是更好地使用列表理解还是用于-每个循环?

在Python中,是更好地使用列表理解还是用于-每个循环?
EN

Stack Overflow用户
提问于 2010-05-17 14:03:18
回答 7查看 17.1K关注 0票数 37

下面哪一项更适合使用,为什么?

方法1:

代码语言:javascript
复制
for k, v in os.environ.items():
       print "%s=%s" % (k, v)

方法2:

代码语言:javascript
复制
print "\n".join(["%s=%s" % (k, v) 
   for k,v in os.environ.items()])

我倾向于把第一条引向更容易理解的方向,但这可能只是因为我对Python不熟悉,而列表理解对我来说仍然有些陌生。第二条路被认为更像毕达通吗?我假设没有表现上的差别,但我可能错了。这两种技术的优缺点是什么?

(代码取自http://diveintopython.net/file_handling/for_loops.html)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-05-17 15:07:47

如果迭代是因为其副作用而进行的(就像在"print“示例中那样),那么循环就更清晰了。

如果迭代是为了构建一个复合值而执行的,那么列表理解通常更易读。

票数 42
EN

Stack Overflow用户

发布于 2010-05-17 14:09:32

您选择的特定代码示例没有显示列表理解的任何优势,因为它正被用于打印这一琐碎的任务。在这个简单的例子中,我将选择简单的for循环。

在许多其他情况下,您会希望向另一个函数或方法提供一个实际的列表,而列表理解是实现这一点的最简单和最易读的方法。

可以通过将print示例替换为一个涉及创建另一个实际列表的示例,通过在for循环的每次迭代中添加一个列表来清楚地显示list comp的优越性:

代码语言:javascript
复制
L = []
for x in range(10):
    L.append(x**2)

提供与以下相同的L

代码语言:javascript
复制
L = [x**2 for x in range(10)]
票数 26
EN

Stack Overflow用户

发布于 2010-05-17 14:08:29

我认为第一个例子更好

在我看来,最好的方法就是让你的意图得到传达,毕竟:

程序应该是为人们阅读而编写的,而只为机器执行而编写。

- Abelson和Sussman的“计算机程序的结构和解释”

顺便说一句,既然您刚刚开始学习Python,那么马上开始学习新的字符串格式语法吧:

代码语言:javascript
复制
for k, v in os.environ.items():
    print "{0}={1}".format(k, v)
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2849645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档