在Python中使用“continue”语句的例子?

continue语句的定义是:

continue语句继续循环的下一次迭代。

我找不到任何好的代码示例。

有人可以build议一些简单的情况下continue是必要的吗?

这是一个简单的例子:

  for letter in 'Django': # First Example if letter == 'D': continue print 'Current Letter:', letter output will be Current Letter: j Current Letter: a Current Letter: n Current Letter: g Current Letter: o 

它继续循环的下一个迭代:

我喜欢在循环中继续使用,在你“做生意”之前,有许多要做的工作。 所以,而不是像这样的代码:

 for x, y in zip(a, b): if x > y: z = calculate_z(x, y) if y - z < x: y = min(y, z) if x ** 2 - y ** 2 > 0: lots() of() code() here() 

我得到这样的代码:

 for x, y in zip(a, b): if x <= y: continue z = calculate_z(x, y) if y - z >= x: continue y = min(y, z) if x ** 2 - y ** 2 <= 0: continue lots() of() code() here() 

通过这样做,我避免了非常深的嵌套代码。 而且,通过首先消除最频繁发生的情况来优化循环是很容易的,所以当没有其他显示器时,我只需要处理偶发但重要的情况(例如除数为0)。

通常情况下,继续是必要/有用的,是当你想跳过循环中的剩余代码并继续迭代。

我不认为这是必要的,因为你总是可以使用if语句来提供相同的逻辑,但是增加代码的可读性可能是有用的。

 import random for i in range(20): x = random.randint(-5,5) if x == 0: continue print 1/x 

继续是一个非常重要的控制语句。 上面的代码表示一个典型的应用程序,其中可以避免被零除的结果。 我经常使用它,当我需要stored procedures的输出,但不想存储输出,如果程序崩溃。 注意,为了testing上面的例子,用print 1 / float(x)replace最后一条语句,或者只要有一个分数,就会得到零,因为randint返回一个整数。 为了清楚,我省略了它。

 def filter_out_colors(elements): colors = ['red', 'green'] result = [] for element in elements: if element in colors: continue # skip the element # You can do whatever here result.append(element) return result >>> filter_out_colors(['lemon', 'orange', 'red', 'pear']) ['lemon', 'orange', 'pear'] 

例如,如果你想根据variables的值做不同的事情:

 for items in range(0,100): if my_var < 10: continue elif my_var == 10: print("hit") elif my_var > 10: print("passed") my_var = my_var + 1 

在上面的例子中,如果我使用break ,解释器将跳过循环。 但是continue它只会跳过if-elif语句并直接转到循环的下一个项目。

假设我们要打印所有不是3和5的倍数的数字

 for x in range(0, 101): if x % 3 ==0 or x % 5 == 0: continue #no more code is executed, we go to the next number print x 

有些人评论可读性,说:“哦,这不能帮助可读性,谁在乎?

假设你需要在主代码之前进行检查:

 if precondition_fails(message): continue ''' main code here ''' 

注意你可以在主代码写完之后做这个而不用改变代码。 如果您对代码进行了区分,则只有添加了“continue”的行才会突出显示,因为主代码没有间距变化。

想象一下,如果你必须做一个产品代码的中断,结果只是继续添加一行。 当您查看代码时,很容易看到这是唯一的变化。 如果开始将主代码封装在if / else中,diff将突出显示新缩进的代码,除非您忽略间距更改,这在Python中尤其危险。 我认为除非你遇到了在短时间内不得不推出代码的情况,否则你可能不会完全明白这一点。

这不是绝对必要的,因为它可以用IF来完成,但是它更具可读性,而且在运行时也更便宜。

如果数据不符合某些要求,我使用它来跳过循环中的迭代:

 # List of times at which git commits were done. # Formatted in hour, minutes in tuples. # Note the last one has some fantasy. commit_times = [(8,20), (9,30), (11, 45), (15, 50), (17, 45), (27, 132)] for time in commit_times: hour = time[0] minutes = time[1] # If the hour is not between 0 and 24 # and the minutes not between 0 and 59 then we know something is wrong. # Then we don't want to use this value, # we skip directly to the next iteration in the loop. if not (0 <= hour <= 24 and 0 <= minutes <= 59): continue # From here you know the time format in the tuples is reliable. # Apply some logic based on time. print("Someone commited at {h}:{m}".format(h=hour, m=minutes)) 

输出:

 Someone commited at 8:20 Someone commited at 9:30 Someone commited at 11:45 Someone commited at 15:50 Someone commited at 17:45 

正如你所看到的,错误的值并没有在continue声明之后。