Extensions

Break, Continue, Enumerate, Strings as Lists, List comprehension

Break and Continue

Sometimes we want to exit a for/while loop before the defining condition is met, or skip some of the iteration steps. Break and Continue statements provide this functionality respectively - Note it is not good practice to use these unnecessarily, as you can usually just define the loop condition differently.

Break

If we want to exit a loop prematurely, we can use the break statement.

# break statement use
num = 0
while num < 10:
    if num == 5:
        break
    print(num)
    num = num + 1

# This code will print "0 1 2 3 4" - I.e. the loop  is cut short

For an actual usage example, suppose we want to find a prime number greater than 9000, but less than 10000 (not knowing if there is one in this range):

num = 9000
while num < 10000: 
    if is_prime(num): # suppose we have an is_prime() function
        print(str(num) + " is a prime number")
        break
    num = num + 1

Continue

Continue allows us to skip iteration steps inside a loop. This might be helpful if we have a complicated for loop which shouldn't carry out its usual operation in a certain case.

For example, we could print the even numbers < 10:

for num in range(0,10):
    if num % 2 != 0: # Number is odd
        continue 
    print(num)

Note: This is not actually a sensible use of continue, as there are far better ways of printing even numbers in a range (for example, x2 every element in range/2).

Enumerate

Sometimes we want to iterate through a list, accessing its elements but also keeping track of the corresponding index. Whilst we could use a counter variable to do this manually, Python's built-in enumerate() function provides and elegant way of doing this:

my_list["Reduce", "Reuse", "Recycle"]

for index, item in enumerate(my_list):
    print("Item " + index " is " + item)

Strings as lists of characters

Some of you may have noticed that we can use the "in" function on strings as well as lists:

# Remember this?
if "a" in "alex":
    print("Yeehaa")

Equivalent to

# What about
if "a" in ['a','l','e','x']:
    print("Strange")

For our purposes, we can think of strings as lists of characters, and manipulate them as we would lists - slicing and all!

Here's a simple example demonstrating reverse iteration through a string:

# Strings are a lists
the_dream = "desserts"
university = the_dream[::-1] # Step backwards from end

print(university)

And another example showing some contrived list slicing:

# Can use list slicing syntax on strings
my_string = "Luke is on a roll"

daily_mail_string = my_string[0:8] + my_string[11:13] + "t" + my_string[13:]
print(daily_mail_string) # "Luke is a troll"

Last updated