我希望以简洁、干净的方式在for
循环中使用条件。我能重写这个吗
>>> for m in (m for m in range(10) if m < 5):
... print m
为了避免加倍for m in ...
,并且仍然有一个漂亮的for
?在
这就是我不想要的:
>>> for m in range(10):
... if m < 5:
... print m
我用Python2.7
编辑
range(10)
,这只是一个玩具的例子。例如,一个真正的用例包括
for m in items if any(cond(item) for cond in conditions)
或者
for m in items if cond1(m) and cond2(m) or cond3(m)
如果我们假设您实际上打算执行更复杂的操作,而实际上需要
if
语句,那么您应该考虑定义一个生成器来生成相关的序列。在例如,代替:
写下:
^{pr2}$这样,复杂的条件被一个描述性的名称替换,for循环就尽可能简单了。此外,您可以测试循环逻辑和处理逻辑,如果您将两者混合在一起,则无法测试。在
使用^{} 和lambda或任何其他函数。在
产生:
^{pr2}$这是必须直截了当的方法,你应该习惯于那样。不建议这样做,但您可以使用函数式编程消除双
^{pr2}$for m in ...
,但在IMO中它非常乏味:相关问题 更多 >
编程相关推荐