下面哪一项更适合使用,为什么?
方法1:
for k, v in os.environ.items():
print "%s=%s" % (k, v)方法2:
print "\n".join(["%s=%s" % (k, v)
for k,v in os.environ.items()])我倾向于把第一条引向更容易理解的方向,但这可能只是因为我对Python不熟悉,而列表理解对我来说仍然有些陌生。第二条路被认为更像毕达通吗?我假设没有表现上的差别,但我可能错了。这两种技术的优缺点是什么?
(代码取自http://diveintopython.net/file_handling/for_loops.html)
发布于 2010-05-17 15:07:47
如果迭代是因为其副作用而进行的(就像在"print“示例中那样),那么循环就更清晰了。
如果迭代是为了构建一个复合值而执行的,那么列表理解通常更易读。
发布于 2010-05-17 14:09:32
您选择的特定代码示例没有显示列表理解的任何优势,因为它正被用于打印这一琐碎的任务。在这个简单的例子中,我将选择简单的for循环。
在许多其他情况下,您会希望向另一个函数或方法提供一个实际的列表,而列表理解是实现这一点的最简单和最易读的方法。
可以通过将print示例替换为一个涉及创建另一个实际列表的示例,通过在for循环的每次迭代中添加一个列表来清楚地显示list comp的优越性:
L = []
for x in range(10):
L.append(x**2)提供与以下相同的L:
L = [x**2 for x in range(10)]发布于 2010-05-17 14:08:29
我认为第一个例子更好
在我看来,最好的方法就是让你的意图得到传达,毕竟:
程序应该是为人们阅读而编写的,而只为机器执行而编写。
- Abelson和Sussman的“计算机程序的结构和解释”
顺便说一句,既然您刚刚开始学习Python,那么马上开始学习新的字符串格式语法吧:
for k, v in os.environ.items():
print "{0}={1}".format(k, v)https://stackoverflow.com/questions/2849645
复制相似问题