在特殊情况下,我需要在python for循环中递减(或者不递增)。
在类c语言中,这可以很容易地通过递减索引来完成,或者如果你有一个类似迭代器的结构,你可以直接"递减"。迭代器。但是我不知道如何在python中实现这一点。
一种解决方案是手动创建一个while循环并自增,但在我的情况下,这会带来许多额外的情况,当我可以自减时只需要一个情况。
C例子for (int i = 0; i < N; ++i) {
if (some_condition) {
i--;
}
}
for (int i = 0; i < N; ++i) {
if (some_condition) {
i--;
}
}
Python等效h5> div class="one_answers">您可以自己创建一个迭代循环。您可以轻松地添加独立于next
调用的循环索引,因此您甚至可以使用使用当前索引的跳过条件。
skip_iteration = True
it = iter(range(10))
iterating = True
value = next(it)
while iterating:
try:
print(value, end=' ')
if skip_iteration:
# iteration skip code
skip_iteration = False
else:
# normal iteration code
value = next(it)
except StopIteration:
iterating = False
这里只跳过第一次迭代,它输出:
0 0 1 2 3 4 5 6 7 8 9
此代码依赖于next
函数在到达迭代器末端时引发StopIteration
的事实。
如果if
语句中的条件与迭代器i
本身有关,则循环可能不会结束,但如果条件不依赖于i
,则不会有任何问题
您也可以尝试使用continue
跳过特定的迭代。