【发布时间】:2014-12-15 17:59:53
【问题描述】:
我在 for 循环中使用列表推导,但我正在寻找的是:从 for 循环中获取两个列表。 示例(它显然不起作用,但我想要这样的东西):
def f(i): return i*i
def g(i): return 1.0/(1+i*i)
seq1, seq2=[(f(i),g(i))
for i in xrange(10)]
我正在寻找的结果必须是:
seq1= [f(0),f(1),..,f(9)]
seq2= [g(0),g(1),..,g(9)]
有可行的解决方案吗? 提前致谢!
【问题讨论】:
-
对于这样的事情不要试图聪明,除非它需要做两个循环。它会更容易阅读和维护。列表推导应该是简单的单行。
-
@Dan:一般我同意,这可能是过早优化的情况——the root of all evil——但我的答案中使用的
zip(*zip(...))在docs 中作为示例显示,所以我怀疑这是 OP 应该学习的 Python 习语。