【发布时间】:2015-09-29 11:55:16
【问题描述】:
我必须在两个值之间循环,有时第一个值小于第二个值,有时第一个值大于第二个值(我正在处理网格内的两个单元格,第一个单元格可以在第二个的左边,反之亦然)。
使用 Python,我可以指定一个 for 循环是否必须减少或增加其值,但结果是这样的:
step = 1
if y < x:
step = -1
for n in range(x, y, step):
pass
还有更多的“pythonic”来获得这个吗?
【问题讨论】:
-
你可以这样做:
for n in range(x, y, -1 if y < x else 1):。它与您的代码基本相同 -
注意,使用step作为
-1与从小到大循环是不一样的! -
@tobias_k 感谢您强调它:您在我的代码中发现了一个错误! :-)