How to Make a for Loop Python to Keep Doing Something Again and Again
Repeating Deportment with Loops
Overview
Educational activity: 30 min
Exercises: 0 minQuestions
How can I practice the same operations on many unlike values?
Objectives
Explicate what a
for
loop does.Correctly write
for
loops to echo simple calculations.Trace changes to a loop variable as the loop runs.
Trace changes to other variables as they are updated by a
for
loop.
In the episode about visualizing data, we wrote Python code that plots values of interest from our first inflammation dataset (inflammation-01.csv
), which revealed some suspicious features in it.
We have a dozen data sets right now and potentially more on the fashion if Dr. Bohemian can go on upwards their surprisingly fast clinical trial rate. Nosotros want to create plots for all of our data sets with a single argument. To do that, we'll have to teach the computer how to repeat things.
An case task that nosotros might want to repeat is accessing numbers in a list, which we will do by printing each number on a line of its own.
In Python, a list is basically an ordered collection of elements, and every element has a unique number associated with it — its index. This means that we can access elements in a listing using their indices. For example, we can become the first number in the list odds
, by using odds[0]
. One way to impress each number is to employ four print
statements:
print ( odds [ 0 ]) impress ( odds [ 1 ]) print ( odds [ ii ]) print ( odds [ three ])
This is a bad arroyo for 3 reasons:
-
Not scalable. Imagine yous need to impress a list that has hundreds of elements. Information technology might exist easier to type them in manually.
-
Difficult to maintain. If nosotros want to decorate each printed element with an asterisk or any other character, we would have to modify 4 lines of lawmaking. While this might not be a trouble for small lists, information technology would definitely be a problem for longer ones.
-
Delicate. If we employ it with a list that has more elements than what nosotros initially envisioned, it volition but display part of the listing's elements. A shorter list, on the other hand, will cause an fault considering it will exist trying to display elements of the list that do non be.
odds = [ i , three , 5 ] print ( odds [ 0 ]) print ( odds [ one ]) print ( odds [ 2 ]) print ( odds [ 3 ])
--------------------------------------------------------------------------- IndexError Traceback (nigh recent call last) <ipython-input-3-7974b6cdaf14> in <module>() 3 print(odds[one]) iv print(odds[2]) ----> 5 impress(odds[3]) IndexError: list alphabetize out of range
Here's a better arroyo: a for loop
odds = [ ane , 3 , five , 7 ] for num in odds : impress ( num )
This is shorter — certainly shorter than something that prints every number in a hundred-number list — and more robust as well:
odds = [ 1 , iii , 5 , 7 , 9 , 11 ] for num in odds : impress ( num )
The improved version uses a for loop to repeat an functioning — in this case, press — one time for each affair in a sequence. The general course of a loop is:
for variable in drove : # do things using variable, such equally print
Using the odds instance in a higher place, the loop might wait like this:
where each number (num
) in the variable odds
is looped through and printed one number after another. The other numbers in the diagram announce which loop cycle the number was printed in (i existence the showtime loop wheel, and 6 being the terminal loop wheel).
We tin telephone call the loop variable anything nosotros similar, only there must be a colon at the terminate of the line starting the loop, and we must indent anything nosotros want to run inside the loop. Unlike many other languages, there is no command to signify the cease of the loop trunk (due east.g. stop for
); what is indented afterward the for
statement belongs to the loop.
What's in a name?
In the example higher up, the loop variable was given the name
num
as a mnemonic; it is short for 'number'. We tin can choose whatever name we want for variables. Nosotros might but as easily have chosen the namebanana
for the loop variable, as long equally we use the same name when nosotros invoke the variable inside the loop:odds = [ one , 3 , v , 7 , 9 , 11 ] for banana in odds : print ( banana )
Information technology is a proficient idea to choose variable names that are meaningful, otherwise it would be more than difficult to sympathise what the loop is doing.
Here'southward another loop that repeatedly updates a variable:
length = 0 names = [ 'Curie' , 'Darwin' , 'Turing' ] for value in names : length = length + 1 print ( 'There are' , length , 'names in the listing.' )
There are three names in the list.
It's worth tracing the execution of this little program step by stride. Since there are three names in names
, the statement on line 4 will exist executed three times. The start time effectually, length
is zero (the value assigned to it on line 1) and value
is Curie
. The statement adds 1 to the old value of length
, producing 1, and updates length
to refer to that new value. The side by side time around, value
is Darwin
and length
is 1, then length
is updated to exist 2. Later on one more update, length
is iii; since there is nothing left in names
for Python to process, the loop finishes and the print
function on line five tells us our final answer.
Annotation that a loop variable is a variable that is being used to record progress in a loop. It still exists later on the loop is over, and we can re-use variables previously divers equally loop variables as well:
name = 'Rosalind' for proper noun in [ 'Curie' , 'Darwin' , 'Turing' ]: print ( proper noun ) print ( 'after the loop, proper name is' , name )
Curie Darwin Turing after the loop, name is Turing
Annotation also that finding the length of an object is such a common operation that Python actually has a congenital-in role to exercise it called len
:
len
is much faster than any function we could write ourselves, and much easier to read than a ii-line loop; it volition also give us the length of many other things that we haven't met nonetheless, and so nosotros should e'er utilise it when we can.
From 1 to N
Python has a built-in function chosen
range
that generates a sequence of numbers.range
can take one, 2, or 3 parameters.
- If i parameter is given,
range
generates a sequence of that length, starting at zippo and incrementing by 1. For example,range(3)
produces the numbers0, 1, two
.- If ii parameters are given,
range
starts at the first and ends only before the second, incrementing past 1. For example,range(2, 5)
producesii, 3, iv
.- If
range
is given 3 parameters, information technology starts at the first one, ends just before the second one, and increments past the 3rd one. For example,range(iii, 10, 2)
producesthree, 5, 7, 9
.Using
range
, write a loop that usesrange
to print the first 3 natural numbers:Solution
for number in range ( 1 , iv ): impress ( number )
Agreement the loops
Given the post-obit loop:
word = 'oxygen' for char in word : impress ( char )
How many times is the body of the loop executed?
- 3 times
- 4 times
- 5 times
- vi times
Solution
The body of the loop is executed six times.
Computing Powers With Loops
Exponentiation is built into Python:
Write a loop that calculates the same issue as
5 ** 3
using multiplication (and without exponentiation).Solution
issue = 1 for number in range ( 0 , 3 ): result = consequence * 5 impress ( consequence )
Summing a list
Write a loop that calculates the sum of elements in a list past calculation each element and printing the final value, so
[124, 402, 36]
prints 562Solution
numbers = [ 124 , 402 , 36 ] summed = 0 for num in numbers : summed = summed + num print ( summed )
Computing the Value of a Polynomial
The congenital-in function
enumerate
takes a sequence (e.g. a listing) and generates a new sequence of the same length. Each element of the new sequence is a pair composed of the index (0, 1, ii,…) and the value from the original sequence:for idx , val in enumerate ( a_list ): # Do something using idx and val
The code above loops through
a_list
, assigning the index toidx
and the value toval
.Suppose you accept encoded a polynomial equally a list of coefficients in the following way: the outset element is the abiding term, the second element is the coefficient of the linear term, the third is the coefficient of the quadratic term, etc.
x = 5 coefs = [ ii , 4 , 3 ] y = coefs [ 0 ] * x ** 0 + coefs [ i ] * x ** one + coefs [ 2 ] * ten ** ii print ( y )
Write a loop using
enumerate(coefs)
which computes the valuey
of any polynomial, givenx
andcoefs
.Solution
y = 0 for idx , coef in enumerate ( coefs ): y = y + coef * x ** idx
Key Points
Use
for variable in sequence
to process the elements of a sequence one at a time.The body of a
for
loop must be indented.Utilize
len(affair)
to determine the length of something that contains other values.
Source: https://swcarpentry.github.io/python-novice-inflammation/05-loop/index.html
Belum ada Komentar untuk "How to Make a for Loop Python to Keep Doing Something Again and Again"
Posting Komentar