Python - Looping Techniques

Basic Loops and Iteration

Python makes looping over variables extremely easy.

No matter the variable type, integers, a strings, lists, tuples and dictionaries, Python has a loop for that.

There are two types of loops in Python.

The For Loop
>>> x = 4
>>> y = 12
>>> for x in range(y):
...   print(x)
0, 1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11  
>>> squares = []
>>> for x in range(11):
...  squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Using Range with Loops

The range(n) function yields the numbers 0, 1, … n-1, and range(a, b) returns a, a+1, … b-1. That is, up to but not including the last number. The combination of the for-loop and the range() function allow you to build a traditional numeric for loop:

>>> fruit = ['banana', 'apple', 'fig', 'squash']
>>> for fruit in range(len(fruit)):
...   print(fruit)
0, 1, 2, 3  #notice how it prints the indexes and not the values  
>>> # if I wanted the values, I can get them from the index
>>> for i in range(len(fruit)):
...  print(i, fruit[i])
0 banana  
1 apple  
2 fig  
3 squash     #now I have the index and the value  
Other Range functions
>>> def filter(x): return x % 3 ==0 or x % 5 ==0
...
>>> filter(f, range(2, 25))
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]
>>> seq = range(8)
>>> def add(a, b): return x + y
...
>>> map(add, seq, seq)
[0, 2, 4, 6, 8, 10, 12, 14]
>>> def sum(seq):
...   def add(x, y): return x + y
...   return reduce(add, seq, 0)
...
>>> sum(range(1, 11))
55  
>>> sum([])
0  
The While Loop

The while loop will continue looping until a certain condition returns True. My favorite Python while loop is the Fibonacci sequence.

>>> fib_list = []
>>> def fib(n):
...     a, b = 0, 1
...     while a < n:
...       a, b = b, a + b
...       fib_list.append(a
...
>>> fib(10)
>>> fib_list
[1, 1, 2, 3, 5, 8, 13]

Craig Derington

Espousing the virtues of Secular Humanism, Libertarianism, Free and Open Source Software, Linux, Ubuntu, Terminal Multiplexing, Docker, Python, Flask, Django, Go, MySQL, PostgreSQL, MongoDB and Git.

comments powered by Disqus