有条件地在python中停止for循环的迭代

时间:2017-08-24 23:51:39

标签: python for-loop iterator

在典型的类C语言中,for循环使您可以更好地控制迭代。我想知道如何做等效的

for(int i = 0; i < A.length; i++) {
  do_things(A[i]);
  if (is_true(i)) {
    i--;
  }
}
在Python中

在其他语言中,我选择使用基于容器的循环结构,但它们通常具有vanilla for循环,我可以在这种情况下使用它。如何获得更多&#34;控制&#34;在Python中迭代时?

我想这个问题的答案非常基础,但搜索条款与其他问题混淆不清。

1 个答案:

答案 0 :(得分:1)

Python中最好的等价物是while - 循环:

i = 0
while i < A.length: # If `A` is a regular Python container type, use `len()`
    do_things(A[i])
    if  is_true(i):
        i -= 1
    i += 1

但是请注意,正如评论中所述,在容器上迭代这样做通常是一个坏主意。您应该检查您的代码并确保您确实需要这种行为。

修改

  

这只是对循环的一个草率解释,在满足某些条件之前不会继续下一个元素。我没有解释清楚,我猜

然后使用continue。减少i是错误的行为:

i = 0
while i < A.length:
    do_things(A[i])
    if not is_true(i):
        continue
    i += 1

更好的是,您可以放弃while - 循环并使用enumerate

for i, el in enumerate(A):
    if not is_true(el):
        continue
    # do work