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
forloop - Looping over dictionaries
- Using the
for elseloop
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 iThe 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