Introduction
There is yet another type of loop. That loop is designed for iterating sets of data. That’s right, lists. Unlike while
loops, these for
loops have a defined length based on the data set that they are iterating over.
Generally, for
loops are used to access and modify each element in a list. To do this, they temporarily represent each element as a new variable used only within the loop.
for
loops have a slightly different structure than while
loops do. They begin with the word for
, which is followed by the temporary variable being created for the loop. Then there is the keyword in
specifying the set of data being used, followed by the data set itself and, ultimately, a colon.
For With Range
There is a method called range()
that either takes a single number and behaves like a list of numbers going from zero until the number before the one specified or takes two numbers separated by a comma and acts like a slice starting at the first number and listing all numbers until the number before the last one.
Below is an example of a for
loop that uses range()
and multiplies each number in it by two.
for x in range(1, 11): print(x * 2)
It hasn’t changed anything. It only prints out the results. However, it can be used to create a new list.
times_two = [] for x in range(1, 11): times_two.append(x * 2) print(x * 2) print(times_two)
Even though you didn’t start with a complete list, you can use range()
to create one. To break it down a bit; range()
outputs each number from one to ten. Then, each number is individually temporarily assigned to x
. The result of x * 2
is passed to the append()
method on the newly created times_two
list.
For With Lists
range()
is great, but it’s only really useful when working with numbers. Most of the time, you will be passing existing lists to a for
loop. Take a look at this example that capitalizes the names of a list of Linux distributions.
# Create the list of distributions linux_distros = ['Debian', 'Ubuntu', 'Mint', 'Fedora', 'CentOS', 'OpenSUSE', 'Slackware', 'Arch', 'Gentoo'] distros_caps = [] # loop through them, capitalize, insert into new for distro in linux_distros: print(distro.upper()) distros_caps.append(distro.upper()) # print the original print(linux_distros) # print the new list print(distros_caps)
This simple for
takes each distribution name from the list, temporarily assigns it to the distro
variable, calls the upper()
method to capitalize and print it before calling the method again to append it on to the new distros_caps
list. In the end, it prints out both lists.
For With Multidimensional Lists
for
loops have no problem iterating through multidimensional lists as well. Doing so involves nesting for
loops within one another. In a two dimensional list, the outer for
loop iterates through the lists within the multidimensional list, and the inner for
loop iterates through the elements of each list. It’s much easier to see through some actual running code.
# Create original list number_sets = [[2, 4, 6], [3, 6, 9], [4, 8, 12]] # Create empty list to copy into square_sets = [] # Start outer for loop to iterate over inner lists for number_set in number_sets: # Add a new empty list to the new list for each iteration square_sets.append([]) # Start inner for loop to iterate over numbers and append them into the new list for number in number_set: print("The original number is %d, and the result is %d." % (number, number ** 2)) square_sets[number_sets.index(number_set)].append(number ** 2) print(square_sets)
The example above provides a better breakdown of exactly what it is doing when. The best way to think of it is that you need one for
loop to iterate over the outer list and another to iterate over each inner list.
The last line of the inner for
might be tripping some people up, but it’s not as complicated as it looks. All that it does is use append()
to add the value of the current number
squared to the new list, square_sets
. Inside the square brackets is a call to index()
, which is taking in the current number
and returning its position in the original list. That is done to ensure that each squared number is added to the right list within square_sets
.
Conclusion
You may find that for
loops are more useful more often than while
loops. They tend to be used very frequently. There is a reason why there were three guides on lists. They are important. They are constantly used. for
loops go hand-in-hand with lists. They are absolutely the best way to get all of the information out of a list. One of the most crucial components of WordPress is its custom for
loop that it uses to display just about everything on its pages. If you are still feeling uncertain about for
loops, you need to go back and take another look at lists, come back to this guide, and run some examples. Experiment until you feel confident. There’s no point in going forward if you’re not.
Table of Contents
- Python Introduction and Installation Guide
- Python Files and the Interpreter
- Experimenting With Numbers and Text In Python
- Python Variables
- Working With Number Variables In Python
- Python String Basics
- Advanced Python Strings
- Python Comments
- Python Lists
- Python List Methods
- Python Multidimensional Lists
- Python Tuples
- Python Boolean Operators
- Python If Statements
- Python While Loops
- Python For Loops
- Python Dictionaries
- Python Advanced Dictionaries
- Python Functions