There are scenarios is programming, where we need to repeat a set of instructions a specified number of times or until a condition is met. This is called iteration. A programming structure that implements iteration is called a loop. In programming there are two types of iteration:
while
loopwhile
loop examplesbreak
, continue
and else
in while
loopwhile
loop for
loopfor
loop examplesrange()
and enumerate()
functionsbreak
, continue
and else
in for
loopfor
loop while
Loop¶initialize loop variable
while (condition is true):
statement(s)
update loop variable
statement(s)
help('while')
The "while" statement ********************* The "while" statement is used for repeated execution as long as an expression is true: while_stmt ::= "while" assignment_expression ":" suite ["else" ":" suite] This repeatedly tests the expression and, if it is true, executes the first suite; if the expression is false (which may be the first time it is tested) the suite of the "else" clause, if present, is executed and the loop terminates. A "break" statement executed in the first suite terminates the loop without executing the "else" clause’s suite. A "continue" statement executed in the first suite skips the rest of the suite and goes back to testing the expression. Related help topics: break, continue, if, TRUTHVALUE
# Example 1: Print numbers
# initialize loop variable - check condition - update loop variable
number = 0
while number < 7:
print(number)
number = number + 1
print("Bye-Bye")
0 1 2 3 4 5 6 Bye-Bye
%%time
# Example 2: Calculate 100th factorial
i = 1
result = 1
if i == 0:
result = 1
else:
while (i <= 100):
result = result * i
i += 1
print(result)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 CPU times: user 474 µs, sys: 429 µs, total: 903 µs Wall time: 543 µs
User time is the amount of CPU time taken outside of the kernel. Sys time is the amount of time taken inside of the kernel, and Wall time the time the code was submitted to the CPU to the time when the process completed.
Here's how the above code works:
We initialize two variables, result
and, i
. result
will contain the final outcome. And i
is used to keep track of the next number to be multiplied with result
. Both are initialized to 1 (can you explain why?)
The condition i <= 100
holds true (since i
is initially 1
), so the while
block is executed.
The result
is updated to result * i
, i
is increased by 1
and it now has the value 2
.
At this point, the condition i <= 100
is evaluated again. Since it continues to hold true, result
is again updated to result * i
, and i
is increased to 3
.
This process is repeated till the condition becomes false, which happens when i
holds the value 101
. Once the condition evaluates to False
, the execution of the loop ends, and the print
statement below it is executed.
# Example 3: Input number from user and compute the sum 1+2+3+4+....+n
n = int(input("Enter number: "))
sum = 0
i = 1
while (i <= n):
sum = sum + i
i = i+1 # update counter
print("The sum is", sum)
Enter number: 6 The sum is 21
# # Example 4: while loop iterates over the elements until a certain condition is met
list1 = ['Learning', 'is', 'fun', 'with', 'Arif Butt']
ctr = 0
while(ctr < len(list1)):
print(list1[ctr])
ctr += 1
print(list1)
Learning is fun with Arif Butt ['Learning', 'is', 'fun', 'with', 'Arif Butt']
# Example 5: Using iterables inside a while loop expression
mylist = ['Arif', 'Hadeed','Mujahid', 'Maaz']
print("mylist before the loop: ", mylist)
x = 1
while mylist: #you read it as while there exist elements in the iterable mylist do following
print("This is iteration number: ", x)
x += 1
mylist.pop() # removes the right most value from the iterable mylist each time it is called
print("mylist after the loop: ",mylist)
mylist before the loop: ['Arif', 'Hadeed', 'Mujahid', 'Maaz'] This is iteration number: 1 This is iteration number: 2 This is iteration number: 3 This is iteration number: 4 mylist after the loop: []
# Example 6: Print Fibonacci series
n = int(input("Enter count of fibonacci numbers you want to print: "))
i = 1
if n<1:
fib = [] # In case user enter <0, the list is empty
elif n==1:
fib = [0] # If user enters 1, the list has the first fibonacci number
elif n==2:
fib = [0, 1] # If user enters 2, the list has the first two fibonacci numbers
elif n > 2:
fib = [0, 1] # if n>2, then we need to enter in while loop to compute the rest of the fibonacci numbers
while (i < n-1):
fib.append(fib[i] + fib[i-1])
i += 1
print("Required Fibonacci series: ", fib)
Enter count of fibonacci numbers you want to print: 9 Required Fibonacci series: [0, 1, 1, 2, 3, 5, 8, 13, 21]
if
statements or other while
loops nested under them# Example 1: A while loop nested inside another while loop
# Note the inner while loop works on a list that is declared again and again inside the outer loop
a = [1,2,3,4,5]
while (a):
print("Outer: ", a.pop())
b = ['Arif', 'Rauf']
while (b):
print("\t Inner: ", b.pop())
print("After both the loops end")
print("a= ", a)
print("b= ", b)
Outer: 5 Inner: Rauf Inner: Arif Outer: 4 Inner: Rauf Inner: Arif Outer: 3 Inner: Rauf Inner: Arif Outer: 2 Inner: Rauf Inner: Arif Outer: 1 Inner: Rauf Inner: Arif After both the loops end a= [] b= []
break
and continue
)¶In the above examples, we have seen that the entire body of the while loop is executed on each iteration. Python provides two keywords that terminate a loop iteration prematurely:
break
statement immediately terminates a loop entirely. Program execution proceeds to the first statement after the loop body.continue
statement immediately terminates the current loop iteration. Program execution jumps to the top of the loop, and the loop condition is re-evaluated to determine whether the loop will execute again or terminatehelp('break')
The "break" statement ********************* break_stmt ::= "break" "break" may only occur syntactically nested in a "for" or "while" loop, but not nested in a function or class definition within that loop. It terminates the nearest enclosing loop, skipping the optional "else" clause if the loop has one. If a "for" loop is terminated by "break", the loop control target keeps its current value. When "break" passes control out of a "try" statement with a "finally" clause, that "finally" clause is executed before really leaving the loop. Related help topics: while, for
#Example 1: Breaking an infinite while loop on a certain condition
n = 0
while (True):
n = n + 1
if (n == 5):
break
print(n)
print("Outside loop")
1 2 3 4 Outside loop
#Example 2: Breaking a while loop on a certain condition
n = 10
while (n > 0):
n = n - 1
if (n == 5):
break
print(n)
9 8 7 6
continue
statement:¶help('continue')
The "continue" statement ************************ continue_stmt ::= "continue" "continue" may only occur syntactically nested in a "for" or "while" loop, but not nested in a function or class definition within that loop. It continues with the next cycle of the nearest enclosing loop. When "continue" passes control out of a "try" statement with a "finally" clause, that "finally" clause is executed before really starting the next loop cycle. Related help topics: while, for
#Example 1: Use of continue
n = 10
while n > 0:
n = n - 1
if (n == 5 or n == 7):
continue
print(n)
9 8 6 4 3 2 1 0
#Example 2: Use of continue
n = 10
while n > 0:
n = n - 1
if (n % 2 == 0):
continue
print(n)
9 7 5 3 1
while
loop with else
statement:¶else
clause will execute.else
clause won’t execute at all.# Example: The `else` block will execute only when the loop condition becomes false
n = 5
while n > 0:
n = n - 1
print(n)
else:
print("Loop is finished")
print("outside loop")
4 3 2 1 0 Loop is finished outside loop
n = 5
while n > 0:
n = n - 1
print(n)
print("Loop is finished")
print("outside loop")
4 3 2 1 0 Loop is finished outside loop
# Example: The `else` block will NOT execute because the loop breaks w/o the loop condition being false
n = 5
while n > 0:
n = n - 1
if (n==2):
break
print(n)
else:
print("Loop is finished")
print("outside loop")
4 3 outside loop
for
Loop¶for
loop when we want to run a block of code for known set of items in an iterable.for
loops are used to loop through an iterable object (like a list, tuple, set, dictionary) and perform the same action for each entry.for variable in <iterable>:
<statement(s)>
for
loop, let us first understand the concept of Iterables and IteratorsIterable
in Python is an object that is capable of returning its members one at a time, and therefore, can be used in an iteration. Lists, Tuples, Sets and Dictionaries are iterables.Iterator
in Python is an object that is used to iterate over iterable objectsiter()
iter()
function returns an iterator for that iterable object.next()
function to iterate over the elements of that iterableiter()
function¶help(iter)
Help on built-in function iter in module builtins: iter(...) iter(iterable) -> iterator iter(callable, sentinel) -> iterator Get an iterator from an object. In the first form, the argument must supply its own iterator, or be a sequence. In the second form, the callable is called until it returns the sentinel.
# Creating list iterator from a list iterable using the iter() method
mylist = ['banana', 'mango', 'grapes']
iterator_mylist = iter(mylist)
iterator_mylist
<list_iterator at 0x7ff115720730>
# Creating tuple iterator from a tuple iterable using the iter() method
mytuple = ('banana', 'mango', 'grapes')
iterator_mytuple = iter(mytuple)
iterator_mytuple
<tuple_iterator at 0x7ff1156425e0>
# Creating set iterator from a set iterable using the iter() method
myset = set(['banana', 'mango', 'grapes'])
iterator_myset = iter(myset)
iterator_myset
<set_iterator at 0x7ff11573ed80>
# Creating dictionary key-iterator from a dictionary iterable using the iter() method
mydict = {1:'banana', 2:'mango', 3:'grapes'}
iterator_dictkeys = iter(mydict)
iterator_dictkeys
<dict_keyiterator at 0x7ff1157bc360>
# Creating dictionary key-iterator from a dictionary iterable using the iter() method
mydict = {1:'banana', 2:'mango', 3:'grapes'}
iterator_dictkeys = iter(mydict.keys())
iterator_dictkeys
<dict_keyiterator at 0x7ff1157bc4f0>
# Creating dictionary value-iterator from a dictionary iterable using the iter() method
mydict = {1:'banana', 2:'mango', 3:'grapes'}
iterator_dictvals = iter(mydict.values())
iterator_dictvals
<dict_valueiterator at 0x7ff1157bc680>
# Creating dictionary item-iterator from a dictionary iterable using the iter() method
mydict = {1:'banana', 2:'mango', 3:'grapes'}
iterator_dictitems = iter(mydict.items())
iterator_dictitems
<dict_itemiterator at 0x7ff1157bc810>
next()
function¶next()
function is passed the iterator of the iterable object returned by the iter()
functionnext()
is called it return the next item from its associated iterable objectnext()
function keeps moving from item to item in the iteratorhelp(next)
Help on built-in function next in module builtins: next(...) next(iterator[, default]) Return the next item from the iterator. If default is given and the iterator is exhausted, it is returned instead of raising StopIteration.
# The iter() method yields successive values from an iterable object, if called successively
mylist = ['banana', 'mango', 'grapes']
a = iter(mylist)
print(next(a))
print(next(a))
print(next(a))
banana mango grapes
# Once you are exhausted with all the values in the iterator, you get stop Iteration error
next(a)
--------------------------------------------------------------------------- StopIteration Traceback (most recent call last) /var/folders/1t/g3ylw8h50cjdqmk5d6jh1qmm0000gn/T/ipykernel_28205/209159179.py in <module> 1 # Once you are exhausted with all the values in the iterator, you get stop Iteration error ----> 2 next(a) StopIteration:
So the
iter()
and thenext()
functions makes the basis of afor
loop in Python
# Example 1
mylist = ['Arif', 'Hadeed', 'Muhahid']
for i in mylist:
print(i)
print("Elements of mylist exhausted and next() returned StopIteration Error, which is handled by for loop")
Arif Hadeed Muhahid Elements of mylist exhausted and next() returned StopIteration Error, which is handled by for loop
iter()
to obtain an iterator for mylistnext()
repeatedly to obtain items from the iterator objectnext()
raises a StopIteration exception# Example 2: Loop through the letters in a string
for i in ("Be Happy"):
print(i)
B e H a p p y
# Example 3: Iterate a tuple using for loop
friends = ('arif', 'rauf', 'hadeed', 'zalaid')
for friend in friends:
print(friend)
arif rauf hadeed zalaid
# Example 4: Iterate a string using for loop and count the count of a specific character
word = "Welcome to Learning with Arif Butt."
count = 0
for character in word:
if character == 'i':
count = count+1
print(count)
3
# Example 5: Iterating through a dictionary keys
d1 = {
'Name': 'Kakamanna',
'Gender': 'Male',
'Age': 23,
'Height': 6.1,
'Occupation': 'Student'
}
print("Iterating through dictionary keys:")
for i in d1:
print(i)
print("Another way of iterating through dictionary keys:")
for i in d1.keys():
print(i)
Iterating through dictionary keys: Name Gender Age Height Occupation Another way of iterating through dictionary keys: Name Gender Age Height Occupation
# Example 6: Iterating through the values
d1 = {
'Name': 'Kakamanna',
'Gender': 'Male',
'Age': 23,
'Height': 6.1,
'Occupation': 'Student'
}
print("Iterating through a dictionary values:")
for i in d1.values():
print(i)
Iterating through a dictionary values: Kakamanna Male 23 6.1 Student
# Example 7: Iterating through the key-value pairs
d1 = {
'Name': 'Kakamanna',
'Gender': 'Male',
'Age': 23,
'Height': 6.1,
'Occupation': 'Student'
}
print("\nIterating through a dictionary key:value pairs:")
for i in d1.items():
print(i)
Iterating through a dictionary key:value pairs: ('Name', 'Kakamanna') ('Gender', 'Male') ('Age', 23) ('Height', 6.1) ('Occupation', 'Student')
d1 = {
'Name': 'Kakamanna',
'Gender': 'Male',
'Age': 23,
'Height': 6.1,
'Occupation': 'Student'
}
print("\nIterating through a dictionary key:value pairs:")
for k,v in d1.items():
print(k,v)
Iterating through a dictionary key:value pairs: Name Kakamanna Gender Male Age 23 Height 6.1 Occupation Student
pass
statement in a for
loop¶pass
statement is generally used as a placeholder i.e. when the user does not know what code to write.pass
statement, where empty code is not allowed, like in loops, function definitions, class definitions, or in if statements.help('pass')
The "pass" statement ******************** pass_stmt ::= "pass" "pass" is a null operation — when it is executed, nothing happens. It is useful as a placeholder when a statement is required syntactically, but no code needs to be executed, for example: def f(arg): pass # a function that does nothing (yet) class C: pass # a class with no methods (yet)
# Print all elements of list ignoring string "arif"
list1 =['rauf', 'arif', 'hadeed', 'mujahid']
for i in list1:
if(i =='arif'):
pass # do nothing
else:
print(i)
rauf hadeed mujahid
# Print the string ignoring spaces
str1 = "This is great stuff"
for i in str1:
if(i ==' '):
pass
else:
print(i, end="")
Thisisgreatstuff
range()
Function in for
Loops¶range()
method is used to create a range object, containing sequence of numbers that can be iterated over using a for
loop.range(n)
- Creates a sequence of numbers from 0
to n-1
range(a, b)
- Creates a sequence of numbers from a
to b-1
range(a, b, step)
- Creates a sequence of numbers from a
to b-1
with increment/decrement of step
help(range)
Help on class range in module builtins: class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range object | | Return an object that produces a sequence of integers from start (inclusive) | to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. | start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. | These are exactly the valid indices for a list of 4 elements. | When step is given, it specifies the increment (or decrement). | | Methods defined here: | | __bool__(self, /) | self != 0 | | __contains__(self, key, /) | Return key in self. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(self, key, /) | Return self[key]. | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __reversed__(...) | Return a reverse iterator. | | count(...) | rangeobject.count(value) -> integer -- return number of occurrences of value | | index(...) | rangeobject.index(value) -> integer -- return index of value. | Raise ValueError if the value is not present. | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | start | | step | | stop
rv = range(10)
print(type(rv))
<class 'range'>
print(range(10)) # returns an iterator object containing integer values
print(list(range(10)))
print(list(range(-5, 2, 1)))
print(list(range(20, 2, -3)))
range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [-5, -4, -3, -2, -1, 0, 1] [20, 17, 14, 11, 8, 5]
#Example 1:
a = range(5)
for i in a:
print(i)
0 1 2 3 4
#Example 2:
#a = range(3, 10)
for i in range(3, 10):
print(i)
3 4 5 6 7 8 9
#Example 3:
a = range(3, 15, 4)
for i in a:
print(i)
3 7 11
# Example 4: Used to iterate over Lists, when you need to track the index of elements while iterating.
friends = ['Rauf','Arif', 'Maaz', 'Hadeed', 'Muhahid', 'Mohid']
for i in range(len(friends)): # Remember the len() function returns 6 in this scenario
print('The value at position {} is {}.'.format(i, friends[i]))
The value at position 0 is Rauf. The value at position 1 is Arif. The value at position 2 is Maaz. The value at position 3 is Hadeed. The value at position 4 is Muhahid. The value at position 5 is Mohid.
enumerate()
Function in for
Loops¶enumerate()
method is passed an iterable object and returns an enumerate object containing tuples, each tuple having two values:(index, data_at_that_index_in_the_iterable)
(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
mylist = ['arif', 'hadeed', 'mujahid']
rv = enumerate(mylist)
print(type(rv))
<class 'enumerate'>
mylist = ['arif', 'hadeed', 'mujahid']
print(list(enumerate(mylist)))
[(0, 'arif'), (1, 'hadeed'), (2, 'mujahid')]
mylist = ['arif', 'hadeed', 'mujahid']
print(dict(enumerate(mylist)))
{0: 'arif', 1: 'hadeed', 2: 'mujahid'}
friends = ['Rauf', 'Arif', 'Maaz', 'Hadeed', 'Muhahid', 'Mohid']
for i, name in enumerate(friends):
print('The value at position {} is {}.'.format(i, friends[i]))
The value at position 0 is Rauf. The value at position 1 is Arif. The value at position 2 is Maaz. The value at position 3 is Hadeed. The value at position 4 is Muhahid. The value at position 5 is Mohid.
break
and continue
statement inside a for
loop¶# Example 1: Break the loop when it reaches the element "cherry"
fruits = ["apple", "banana", "cherry", "guava"]
for x in fruits:
if x == "cherry":
break
print(x)
apple banana
# Example 2: Do not print banana from the list
fruits = ["apple", "banana", "cherry", "guava"]
for x in fruits:
if x == "banana":
continue
print(x)
apple cherry guava
# Example 3: Print odd numbers from 1 to 11
for i in range(1,12):
if i%2 == 0:
continue
print(i)
1 3 5 7 9 11
# Example 4: A for loop with else and break
mydict = {
'arif':90,
'rauf':95,
'maaz':81,
'hadeed':77,
'mujahid':86,
'mohid':100
}
student_name = input('enter name: ')
for name in mydict.keys():
if name == student_name:
print(mydict[name])
break
else:
print('No entry with that name found.')
print("Outside loop")
enter name: arif 90 Outside loop
# Example: A for loop nested inside another for loop
# Note the inner for loop works on a list that is declared again and again inside the outer loop
list1 = [1,2,3,4]
for numb in list1:
print("Outer: ", numb)
list2 = ['Arif', 'Rauf']
for name in list2:
print("\t Inner: ", name)
print("Outside loops")
Outer: 1 Inner: Arif Inner: Rauf Outer: 2 Inner: Arif Inner: Rauf Outer: 3 Inner: Arif Inner: Rauf Outer: 4 Inner: Arif Inner: Rauf Outside loops
days = ['Monday', 'Tuesday', 'Wednesday']
fruits = ['apple', 'banana', 'guava']
for day in days:
for fruit in fruits:
print(day, fruit)
Monday apple Monday banana Monday guava Tuesday apple Tuesday banana Tuesday guava Wednesday apple Wednesday banana Wednesday guava
Example 1: Suppose we have an oldlist containing some random numbers. We want to create a new list that contains square of the numbers of the oldlist
oldlist = [5, 3, 6, 2]
newlist = []
for i in oldlist:
newlist.append(i*i)
newlist
[25, 9, 36, 4]
You can perform above task in single line using List Comprehension
newlist = [expression for item in iterable]
Where,
expression
is the member itself, a call to a method, or any other valid expression that returns a value.item
is the object or value in the list or iterable.iterable
is a list, set, sequence, generator, or any other object that can return its elements one at a time.oldlist = [5, 3, 6, 2]
newlist = [i*i for i in oldlist]
newlist
[25, 9, 36, 4]
Example 2: Given a list, create a new list that should contain the even numbers in the given list using List Comprehension
newlist = [expression for item in iterable if (condition == True)]
A list comprehension in Python can have four elements:
expression
is the member itself, a call to a method, or any other valid expression that returns a value.item
is the object or value in the list or iterable.iterable
is a list, set, sequence, generator, or any other object that can return its elements one at a time.if (condition==True)
The item will be placed in the newlist only if the condition evaluates to Truelist1 = [1, 9, 12, 88, 65, 7, 20, 55, 47, 32]
newlist = []
for i in list1:
if (i%2 == 0):
newlist.append(i)
newlist
[12, 88, 20, 32]
list1 = [1, 9, 12, 88, 65, 7, 20, 55, 47, 32]
newlist = [i for i in list1 if (i % 2 == 0)]
newlist
[12, 88, 20, 32]
Example 3: Suppose we want to create a newlist
from an existing list of fruits
such that the new list should contain only those fruits having alphabet a
in their name
newlist = [expression for item in iterable if (condition == True)]
A list comprehension in Python can have four elements:
expression
is the member itself, a call to a method, or any other valid expression that returns a value.item
is the object or value in the list or iterable.iterable
is a list, set, sequence, generator, or any other object that can return its elements one at a time.if (condition)
The item will be placed in the newlist only if the condition evaluates to truefruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for fruit in fruits:
if "a" in fruit:
newlist.append(fruit)
print(newlist)
['apple', 'banana', 'mango']
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [fruit for fruit in fruits if ("a" in fruit)]
print(newlist)
['apple', 'banana', 'mango']
Example 4: Create a newlist
from an existing list of fruits
such that the new list should contain all elements less "kiwi". Use List Comprehension
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [fruit for fruit in fruits if (fruit != "kiwi")]
print(newlist)
['apple', 'banana', 'cherry', 'mango']
Dictionary comprehension is a concise way to create a new dictionary based on the values of an existing list or dictionary.
Let us understand Dictionary comprehension step by step with examples:
newdict = {key:value for var in iterable if (condition == True)}
[ ]
, while for dictionary comprehension we use { }
Example 1: Suppose we have a list containing some random numbers. We want to create a dictionary having keys of that list and values as cubes of the list values
list1 = [1, 2, 3, 4, 5]
dict1 = {key: key**3 for key in list1}
print (dict1)
{1: 1, 2: 8, 3: 27, 4: 64, 5: 125}
Example 2: Suppose we have a list containing numbers from 1 to 10. We want to create a dictionary having dictionary keys as the values of that list and dictionary values as cubes of the values in the list. However, the dictionary should contain only those key:value pairs, where the dictionary values are divisible by 4
list1 = range(11)
dict1 = {key: key**3 for key in list1 if key**3 % 4 == 0}
print(dict1)
{0: 0, 2: 8, 4: 64, 6: 216, 8: 512, 10: 1000}
Example 3: Suppose we have a dictionary containing some grossary items and their prices.
dict1 = {'milk': 120.0, 'choclate': 45.0, 'bread': 80.0}
Use dictionary comprehension to create a new dictionary with increased prices by 25%
dict1 = {'milk': 120.0, 'choclate': 45.0, 'bread': 80.0}
increase = 1.25
dict2 = {key: value*increase for (key, value) in dict1.items()}
print(dict2)
{'milk': 150.0, 'choclate': 56.25, 'bread': 100.0}
Example 4: Suppose we have a dictionary
dict1 = {'alpha': 47, 'bravo': 84, 'charlie': 79, 'delta': 92}
Use Dictionary comprehension to create a new dictionary containing even values only
dict1 = {'alpha': 47, 'bravo': 84, 'charlie': 79, 'delta': 92}
dict2 = {key: value for (key, value) in dict1.items() if value % 2 == 0}
print(dict2)
{'bravo': 84, 'delta': 92}
Try answering the following questions to test your understanding of the topics covered in this notebook:
while
statement in Python?white
statement in Python? Give an example.break
statement in Python?break
statement within a while loop.continue
statement in Python?continue
statement within a while loop.for
statement in Python?for
loops? Give an example.range
statement? Give an example.enumerate
statement? Give an example.break
, continue
, and pass
statements used in for loops? Give examples.