The definition of the continue
statement is:
The
continue
statement continues with the next iteration of the loop.
I can't find any good examples of code.
Could someone suggest some simple cases where continue
is necessary?
The definition of the continue
statement is:
The
continue
statement continues with the next iteration of the loop.
I can't find any good examples of code.
Could someone suggest some simple cases where continue
is necessary?
Here's a simple example:
for letter in 'Django':
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
It skips the rest of the current iteration (here: print
) and continues to the next iteration of the loop.
continue
does but it's not overly useful, when you could do if letter != 'D': print 'Current Letter:', letter
–
Odom I like to use continue in loops where there are a lot of contitions to be fulfilled before you get "down to business". So instead of code like this:
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()
I get code like this:
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()
By doing it this way I avoid very deeply nested code. Also, it is easy to optimize the loop by eliminating the most frequently occurring cases first, so that I only have to deal with the infrequent but important cases (e.g. divisor is 0) when there is no other showstopper.
continue
in this fashion is similar to using GOTO
. However, this is the right way to use GOTO
. –
Knucklebone Usually the situation where continue is necessary/useful, is when you want to skip the remaining code in the loop and continue iteration.
I don't really believe it's necessary, since you can always use if statements to provide the same logic, but it might be useful to increase readability of code.
if <condition>: continue
rather than if not <condition>: ...
avoids a level of indentation that would otherwise be needed if it was written without it. –
Fouquet continue
statement, we are essentially jumping out of a conditional testing section and allowing the iteration of the loop to proceed on to the next iteration? It isn't apparent to me how this would be better than using else
. Is it just all about improved readability and run-time performance? –
Manard import random
for i in range(20):
x = random.randint(-5,5)
if x == 0: continue
print 1/x
continue is an extremely important control statement. The above code indicates a typical application, where the result of a division by zero can be avoided. I use it often when I need to store the output from programs, but dont want to store the output if the program has crashed. Note, to test the above example, replace the last statement with print 1/float(x), or you'll get zeros whenever there's a fraction, since randint returns an integer. I omitted it for clarity.
Some people have commented about readability, saying "Oh it doesn't help readability that much, who cares?"
Suppose you need a check before the main code:
if precondition_fails(message): continue
''' main code here '''
Note you can do this after the main code was written without changing that code in anyway. If you diff the code, only the added line with "continue" will be highlighted since there are no spacing changes to the main code.
Imagine if you have to do a breakfix of production code, which turns out to simply be adding a line with continue. It's easy to see that's the only change when you review the code. If you start wrapping the main code in if/else, diff will highlight the newly indented code, unless you ignore spacing changes, which is dangerous particularly in Python. I think unless you've been in the situation where you have to roll out code on short notice, you might not fully appreciate this.
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']
continue
statement add here? It could be eliminated by using element not in colors
, and the code would be just as readable. –
Jonquil Let's say we want to print all numbers which are not multiples of 3 and 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 x %3 == 0 or x % 5 == 0:
, pass
, else:
, print x
–
Worthwhile continue
. My conclusion is that there is never a need, but in some cases (like this one) the code is more readable using continue
. It's a very good example. –
Worthwhile It is not absolutely necessary since it can be done with IFs but it's more readable and also less expensive in run time.
I use it in order to skip an iteration in a loop if the data does not meet some requirements:
# 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))
Output:
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
As you can see, the wrong value did not make it after the continue
statement.
if
can only do what continue
does if all the code is contained in a block. continue
skips code that is even outside of the if
block. –
Recusancy For example if you want to do diferent things depending on the value of a variable:
my_var = 1
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
In the example above if I use break
the interpreter will skip the loop. But with continue
it only skips the if-elif statements and go directly to the next item of the loop.
my_var
of 0
. –
Fouquet continue
. –
Ramiah elif
should be an if
. The code just doesn't give the appearance that you know what you are doing. –
Ramiah © 2022 - 2024 — McMap. All rights reserved.