for
loops, especially for those programmers from Java/C++ that may miss some of the best features because those languages don't have any equivalent, it covers:- The basic
for
loop - Looping over dictionaries
- Using the
for else
loop
The Basic for
loop
If you come from a Java/C++/PHP background, you're used to two different for
loops foreach
and for
. Python only has one of these, the more powerful foreach
.In Java, your for loop would look something like this:
for(int i = 0; i < 10; i += 2)
{
System.out.println(i);
}
In Python, the same loop would look like;for i in range(0, 10, 2):
print(i)
The range
function returns a list of numbers 0 to 10 incremented by 2.If you wanted 0-9 inclusive, the loop would be even more simple.
for foo in range(10):
print(foo)
In this same manner, you can replace the range()
with any list:for j in [1,1,2,3,5]:
print(j)
Looping over Dictionaries (maps)
Maps are a very handy Python builtin feature, allowing you to create arbitrary key->value pairs.{
"key":"value",
"bob":"smith",
"age":13,
"dob":(2012,01,01)
}
You can quickly loop over key->value pairs in a dictionary by using the following:for key, value in a.items():
print("{} -> {}".format(key, value))
Note that this is much faster than looping over the keys, then looking up the value for each key inside the for loop. The items
function returns a list of tuples where the first value is the key, and the second a value.In fact, you can loop over any list of tuples in a similar manner:
b = [("Perro", 1, ["Canis", "lupis"]),
("Gato", 2, ["Felis", "catus"])]
for name, id, scientific in b:
print("Name: {} ID: {} Breed: {}".format(name, id, " ".join(scientific)))
The Magic of the for else
Loop
If you've ever wanted to check if something happened within a for loop you can use an else
block after your for loop:for i in ["foo","bar"]:
if i == "baz":
break
else:
# happens if break is not called, meaning "baz" was not found
return -1
# i is set to the location of "baz"
return i
The example above tries to find the location of a specified string in a list of strings, if found it returns the index, otherwise -1. Of course there are far easier ways to do this, but you get the idea.
No comments:
Post a Comment