How do I write conditional for loops in one line in Python?
例如,我如何浓缩
1 2 3 | In [1]: for x in xrange(1,11): ...: if x%2==0: ...: print x |
一条线?
编辑:谢谢大家!这正是我要找的。不过,为了使这一点更具挑战性,是否有办法添加elif&else,并使其保持在线状态?
要使用前面的示例,
1 2 3 4 5 | for x in xrange(1,11): if x%2==0: print x else print"odd" |
对于您的具体示例:
1 | for x in xrange(2, 11, 2): print x |
更一般地说,就是否可以在一行上嵌套块而言,答案是否定的。对复合语句的文档进行解释,"套件"可能不包含嵌套的复合语句(如果它是单行形式)。"suite"是由子句控制的语句组(如条件块或循环体)。
可能是这样的:
1 2 3 | from __future__ import print_function map(print, [x for x in xrange(1,11) if x % 2 == 0]) |
这并不完全相同,也不是"一行",但是考虑删除副作用并使用列表过滤/理解。
1 2 3 4 5 | evens = [x for x in xrange(1,11) if x % 2 == 0] print" ".join(evens) # or (now a saner"one line", the evens-expr could even be moved in-place) for x in evens: print x |
1 2 | for x in [y for y in xrange(1,11) if y%2==0]: print x |