Working With Lists and Dictionaries CH-4
Working With Lists and Dictionaries CH-4
com
Downloaded from https:// www.dkgoelsolutions.com
om
.c
ns
io
In this chapter
ut » Introduction to List
ol
» List Operations
ls
abstraction – creating the right model for » List Methods and Built-
kg
» Introduction to
w
Dictionaries
w
Built-in Functions
tp
» Manipulating
4.1 IntroductIon LIst
ht
to Dictionaries
The data type list is an ordered sequence which is
mutable and made up of one or more elements. Unlike a
string which consists of only characters, a list can have
elements of different data types such as integer, float,
string, tuple or even another list. A list is very useful to
group elements of mixed data types. Elements of a list
are enclosed in square brackets and are separated by
comma.
Example 4.1
#list1 is the list of six even numbers
>>> list1 = [2,4,6,8,10,12]
>>> print(list1)
[2, 4, 6, 8, 10, 12]
2020-21
Chap 4.indd 55
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
>>> print(list4)
[['Physics', 101], ['Chemistry', 202],
.c
['Mathematics', 303]]
ns
4.1.1 Accessing Elements in a List
io
Each element in list is accessed using value called index.
ut
The fist index value is 0, the second index is 1 and so
ol
on. Elements in the list are assigned index values in
ls
2
s:
8
#Out of range index value for the list returns error
ht
>>> list1[15]
IndexError: list index out of range
#an expression resulting in an integer index
>>> list1[1+4]
12
>>> list1[-1] #return first element from right
12
#length of the list1 is assigned to n
>>> n = len(list1)
>>> print(n)
6
#Get the last element of the list1
>>> list1[n-1]
12
2020-21
Chap 4.indd 56
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
4.2 LIst operatIons
.c
The data type list allows manipulation of its contents
ns
through various operations as shown below.
io
4.2.1 Concatenation
Python allows us to join two or more lists using ut Concatenation is the
ol
merging of two or
concatenation operator using symbol +. more values. Example:
ls
['Red','Green','Blue','Cyan','Magenta',
ht
'Yellow','Black']
Note that, there is no change in original lists i.e.,
list1, list2, list3, list4 remain the same after
concatenation operation. If we want to use the result of
two concatenated lists, we should use an assignment
operator.
For example,
#Join list 2 at the end of list
>>> new List = list 1 + list 2
[1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
>> new list The concatenation operator '+’ requires that
the operands should be of list type only. If we try to
concatenate a list with elements of some other data
type, TypeError occurs.
2020-21
Chap 4.indd 57
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
4.2.2 Repetition
Python allows us to replicate the contents of a list using
repetition operator depicted by symbol *.
>>> list1 = ['Hello']
#elements of list1 repeated 4 times
>>> list1 * 4
['Hello', 'Hello', 'Hello', 'Hello']
om
4.2.3 Membership
.c
The membership operator in checks if the element
ns
is present in the list and returns True, else returns
False.
io
>>> list1 = ['Red','Green','Blue']
>>> 'Green' in list1
ut
ol
True
>>> 'Cyan' in list1
ls
False
oe
True
w
False
4.2.4 Slicing
s:
tp
2020-21
Chap 4.indd 58
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
>>> list1[::2] #step size 2 on entire list
['Red','Blue','Magenta','Black']
.c
ns
#Access list in the reverse order using
negative step size
io
>>> list1[::-1]
['Black','Yellow','Magenta','Cyan','Blue', ut
ol
'Green','Red']
ls
oe
'Black']
//w
range(n) returns a
Blue
sequence of numbers
Yellow starting from 0,
Black increases by 1 and ends
Another way of accessing the elements of the list is at n-1 (one number
less than the specified
using range() and len() functions: number i.e. is)
>>> for i in range(len(list1)):
print(list1[i])
Output:
Red
Green
Blue
Yellow
Black
2020-21
Chap 4.indd 59
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
len() Returns the length of the list passed as >>> list1 = [10,20,30,40,50]
the argument >>> len(list1)
5
om
list() Creates an empty list if no argument is >>> list1 = list()
passed >>> list1
.c
[ ]
ns
io
Creates a list if a sequence is passed as ut
>>> str1= 'aeiou'
>>> list1 = list(str1)
ol
an argument >>> list1
ls
['a', 'e', 'i', 'o', 'u']
oe
kg
>>> list1
w
A list can also be appended as an ele- [10, 20, 30, 40, 50]
ment to an existing list >>> list1 = [10,20,30,40]
w
>>> list1.append([50,60])
//w
>>> list1
[10, 20, 30, 40, [50, 60]]
s:
tp
extend() Appends each element of the list passed >>> list1 = [10,20,30]
ht
2020-21
Chap 4.indd 60
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
removed. If the element is not present, [10, 20, 40, 50, 30]
then ValueError is generated >>> list1.remove(90)
.c
ValueError:list.remove(x):x not in
ns
list
io
pop() Returns the element whose index is >>> list1 = [10,20,30,40,50,60]
passed as argument to this function
and also removes it from the list. If no ut
>>> list1.pop(3)
40
ol
argument is given, then it returns and >>> list1
ls
removes the last element of the list [10, 20, 30, 50, 60]
oe
60
>>> list1
.d
>>> list1.reverse()
>>> list1
['Dog', 'Elephant', 'Cat', 'Lion',
'Zebra', 'Tiger']
sort() Sorts the elements of the given list in >>>list1 = ['Tiger','Zebra','Lion',
place 'Cat', 'Elephant' ,'Dog']
>>> list1.sort()
>>> list1
['Cat', 'Dog', 'Elephant', 'Lion',
'Tiger', 'Zebra']
2020-21
Chap 4.indd 61
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
4.5 LIst ManIpuLatIon
.c
In this chapter, we have learnt to create a list and the different ways to
ns
manipulate lists. In the following programs, we will apply the various list
io
manipulation methods.
ut
Program 4-1 Write a program to allow user to perform any those list operation
ol
given in a menu. The menu is:
ls
oe
1. Append an element
2. Insert an element
kg
#Program 4-1
#Menu driven program to do various list operations
myList = [22,4,16,38,13] #myList having 5 elements
choice = 0
For attempt in range (3): print ("Attempt number:", attempt)
print("The list 'myList' has the following elements", myList)
print("\nL I S T O P E R A T I O N S")
print(" 1. Append an element")
print(" 2. Insert an element at the desired position")
print(" 3. Append a list to the given list")
print(" 4. Modify an existing element")
print(" 5. Delete an existing element by its position")
print(" 6. Delete an existing element by its value")
2020-21
Chap 4.indd 62
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
#append element
if choice == 1:
element = eval(input("Enter the element to be appended: "))
myList.append(element)
print("The element has been appended\n")
om
pos = int(input("Enter the position:"))
myList.insert(pos,element)
.c
print("The element has been inserted\n")
ns
io
#append a list to the given list
elif choice == 3:
ut
newList = eval(input("Enter the list to be appended: "))
ol
myList.extend(newList)
ls
print("The list has been appended\n")
oe
elif choice == 4:
i = int(input("Enter the position of the element to be
.d
modified: "))
w
if i < len(myList):
w
oldElement = myList[i]
myList[i] = newElement
s:
else:
print("Position of the element is more then the length
ht
of list")
2020-21
Chap 4.indd 63
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
#list in reverse sorted order
.c
elif choice == 8:
ns
myList.sort(reverse = True)
io
print("\nThe list has been sorted in reverse order")
else:
kg
The list 'myList' has the following elements [22, 4, 16, 38, 13]
w
Attempt number : 1
w
L I S T O P E R A T I O N S
//w
1. Append an element
2. Insert an element at the desired position
s:
2020-21
Chap 4.indd 64
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
The list 'myList' has the following elements [38, 22, 13, 4]
Attempt number : 3
L I S T O P E R A T I O N S
.c
1. Append an element
ns
2. Insert an element at the desired position
io
3. Append a list to the given list
4. Modify an existing element
5. Delete an existing element by its position ut
ol
6. Delete an existing element by its value
ls
#Program 4-2
#create an empty list
ht
list1 = []
print("How many students marks you want to enter: ")
n = int(input())
for i in range(0,n):
print("Enter marks of student",(i+1),":")
marks = int(input())
#append marks in the list
list1.append(marks)
#initialize total
total = 0
for marks in list1:
2020-21
Chap 4.indd 65
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
Enter marks of student 4:
76
.c
Enter marks of student 5:
ns
55
Average marks of 5 students is: 68.8
io
Program 4-3 Write a program to check if a number is
present in the list or not. If the number ut
ol
is present, print the position of the
ls
#Program 4-3
list1 = [] #Create an empty list
.d
maximum = int(input())
w
for i in range(0,maximum):
n = int(input())
s:
position = -1
for i in range (0, lin (list1)
if list1[i] == num: #number is present
position = i+1 #save the position of number
if position == -1 :
print("Number",num,"is not present in the list")
else:
print("Number",num,"is present at",position + 1, "position")
Output:
How many numbers do you want to enter in the list
5
2020-21
Chap 4.indd 66
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
key-value pair is called an item. A key is separated from
its value by a colon(:) and consecutive items are separated
.c
by commas. Items in dictionaries are unordered, so we
ns
may not get back the data in the same order in which
io
we had entered the data initially in the dictionary.
4.6.1 Creating a Dictionary ut
ol
To create a dictionary, the items entered are separated
ls
by commas and enclosed in curly braces. Each item is
oe
Example 4.2
w
>>> dict1
{}
s:
2020-21
Chap 4.indd 67
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
value 89 and key 'Sangeeta' always maps to the value
85. So the order of items does not matter. If the key is not
.c
present in the dictionary we get KeyError.
ns
4.6.3 Membership Operation
io
The membership operator in checks if the key is present
ut
in the dictionary and returns True, else it returns False.
ol
>>> dict1 = {'Mohan':95,'Ram':89,'Suhel':92,
ls
'Sangeeta':85}
oe
False
s:
2020-21
Chap 4.indd 68
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:20 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
4.7 traversIng a dIctIonary
We can access each item of the dictionary or traverse a
.c
dictionary using for loop.
ns
>>> dict1 = {'Mohan':95,'Ram':89,'Suhel':92,
'Sangeeta':85}
io
Method 1:
>>> for key in dict1: ut
ol
print(key,':',dict1[key])
ls
Mohan: 95
oe
Ram: 89
Suhel: 92
kg
Sangeeta: 85
.d
Method 2:
w
print(key,':',value)
//w
Mohan: 95
Ram: 89
s:
Suhel: 92
tp
Sangeeta: 85
ht
2020-21
Chap 4.indd 69
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
'Sangeeta'])
.c
values() Returns a list of values in the >>> dict1 = {'Mohan':95, 'Ram':89,
ns
dictionary 'Suhel':92, 'Sangeeta':85}
>>> dict1.values()
io
dict_values([95, 89, 92, 85])
ut
ol
items() Returns a list of tuples (key — >>> dict1 = {'Mohan':95, 'Ram':89,
ls
value) pair 'Suhel':92, 'Sangeeta':85}
oe
>>> dict1.items()
dict_items([( 'Mohan', 95), ('Ram', 89),
kg
>>> dict1.get('Sangeeta')
If the key is not present in the 85
//w
>>>
tp
'Suhel':92, 'Sangeeta':85}
argument to the key-value pair of >>> dict2 = {'Sohan':79,'Geeta':89}
the given dictionary >>> dict1.update(dict2)
>>> dict1
{'Mohan': 95, 'Ram': 89, 'Suhel': 92,
'Sangeeta': 85, 'Sohan': 79, 'Geeta': 89}
>>> dict2
{'Sohan': 79, 'Geeta': 89}
2020-21
Chap 4.indd 70
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
del() Deletes the item with the given >>> dict1 = {'Mohan':95,'Ram':89,
key 'Suhel':92, 'Sangeeta':85}
To delete the dictionary from the >>> del dict1['Ram']
memory we write: >>> dict1
del Dict_name
{'Mohan':95,'Suhel':92, 'Sangeeta': 85}
>>> dict1
NameError: name 'dict1' is not defined
om
In this chapter, we have learnt how to create a
dictionary and apply various methods to manipulate it.
.c
The following examples show the application of those
ns
manipulation methods on dictionaries.
io
(a) Create a dictionary ‘ODD’ of odd numbers between
1 and 10, where the key is the decimal number and
the value is the corresponding number in words. ut
ol
ls
>>> ODD = {1:'One',3:'Three',5:'Five',7:'Seven',9:'Nine'}
oe
>>> ODD
{1: 'One', 3: 'Three', 5: 'Five', 7: 'Seven', 9: 'Nine'}
kg
.d
>>> ODD.keys()
w
dict_keys([1, 3, 5, 7, 9])
//w
2020-21
Chap 4.indd 71
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
(i) Delete the item from the dictionary, corresponding to the key 9. ‘ODD’
>>> del ODD[9]
>>> ODD
{1: 'One', 3: 'Three', 5: 'Five', 7: 'Seven'}
om
Program 4-4 σ n number of write a program to enter
names of employees and their salaries
.c
as input and store them in a dictionary.
ns
Here n is to input by the user.
io
#Program 4-4
ut
#Program to create a dictionary which stores names of employees
ol
#and their salary
ls
num = int(input("Enter the number of employees whose data to be
stored: "))
oe
count = 1
kg
employee[name] = salary
//w
print("\n\nEMPLOYEE_NAME\tSALARY")
for k in employee:
s:
print(k,'\t\t',employee[k])
Output:
tp
2020-21
Chap 4.indd 72
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
'Joseph' 24000
'Rahul' 30000
'Zoya' 25000
om
dic[ch] += 1
else:
.c
dic[ch] = 1 #if ch appears for the first time
ns
io
for key in dic:
print(key,':',dic[key])
Output: ut
ol
Enter a string: HelloWorld
ls
H : 1
oe
e : 1
kg
l : 3
o : 2
.d
W : 1
w
r : 1
w
d : 1
//w
Seven Six’.
# Program 4-6
num = input("Enter any number: ") #number is stored as string
#numberNames is a dictionary of digits and corresponding number
#names
numberNames = {0:'Zero',1:'One',2:'Two',3:'Three',4:'Four',\
5:'Five',6:'Six',7:'Seven',8:'Eight',9:'Nine'}
result = ''
for ch in num:
key = int(ch) #converts character to integer
value = numberNames[key]
2020-21
Chap 4.indd 73
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
suMMary
•
om
Lists are mutable sequences in Python, i.e. we can
change the elements of the list.
.c
• Elements of a list are put in square brackets
ns
separated by comma.
•
io
List indexing is same as that of list and starts at 0.
ut
Two way indexing allows traversing the list in the
forward as well as in the backward direction.
ol
•
ls
Operator + concatenates one list to the end of other
oe
list.
• Operator * repeats the content of a list by
kg
opposite.
//w
2020-21
Chap 4.indd 74
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
notes
exercIse
1. What will be the output of the following statements?
a) list1 = [12,32,65,26,80,10]
list1.sort()
print(list1)
b) list1 = [12,32,65,26,80,10]
sorted(list1)
print(list1)
om
c) list1 = [1,2,3,4,5,6,7,8,9,10]
list1[::-2]
list1[:3] + list1[3:]
.c
ns
d) list1 = [1,2,3,4,5]
list1[len(list1)-1]
io
2. Consider the following list myList. What will be
ut
the elements of myList after each of the following
ol
operations?
ls
myList = [10,20,30,40]
oe
a) myList.append([50,60])
b) myList.extend([80,90])
kg
myList = [1,2,3,4,5,6,7,8,9,10]
w
for i in range(0,len(myList)):
w
if i%2 == 0:
//w
print(myList[i])
4. What will be the output of the following code segment?
s:
a) myList = [1,2,3,4,5,6,7,8,9,10]
tp
del myList[3:]
ht
print(myList)
b) myList = [1,2,3,4,5,6,7,8,9,10]
del myList[:5]
print(myList)
c) myList = [1,2,3,4,5,6,7,8,9,10]
del myList[::2]
print(myList)
5. Differentiate between append() and extend() methods
of list.
2020-21
Chap 4.indd 75
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
78.8]
Write Python statements to retrieve the following
.c
information from the list stRecord.
ns
a) Percentage of the student
io
b) Marks in the fifth subject
c) ut
Maximum marks of the student
ol
ls
d) Roll No. of the student
oe
stateCapital = {"Assam":"Guwahati",
w
"Bihar":"Patna","Maharashtra":"Mumbai",
w
"Rajasthan":"Jaipur"}
//w
a) print(stateCapital.get("Bihar"))
tp
b) print(stateCapital.keys())
ht
c) print(stateCapital.values())
d) print(stateCapital.items())
e) print(len(stateCapital))
f) print("Maharashtra" in stateCapital)
g) print(stateCapital.get("Assam"))
h) del stateCapital["Assam"]
print(stateCapital)
prograMMIng proBLeMs
1. Write a program to find the number of times an element
occurs in the list.
2020-21
Chap 4.indd 76
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
5. Write a program to read a list of elements. Modify this
list so that it does not contain any duplicate elements i.e.
.c
all elements occurring multiple times in the list should
ns
appear only once.
io
6. Write a program to create a list of elements. Input an
element from the user that has to be inserted in the list.
Also input the position at which it is to be inserted. ut
ol
7. Write a program to read elements of a list and do the
ls
following.
oe
the list.
//w
mates a key and its index value for fist occurrence males
the corresponding value in dictionary.
Expected output : {'3': 1, 's': 4, 'r': 2, 'u': 6, 'w': 0, 'c': 8,
'e': 3, 'o': 5}
10. Write a program to input your friend’s, names and their
phone numbers and store them in the dictionary as the
key-value pair. Perform the following operations on the
dictionary:
a) Display the Name and Phone number for all your
friends.
b) Add a new key-value pair in this dictionary and
display the modified dictionary
2020-21
Chap 4.indd 77
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
of students).
•
.c
Search details of a particular student on the basis
of roll number and display result.
ns
• Display the result of all the students.
io
• Find the topper amongst them.
• ut
Find the subject toppers amongst them.
ol
ls
(Hint: Use Dictionary, where the key can be roll number
oe
case study
.d
2020-21
Chap 4.indd 78
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
• Take details such as amount and period for a
.c
Fixed Deposit and display its maturity amount for
ns
a particular customer.
2. Participating in a quiz can be fun as it provides a
io
competitive element. Some educational institutes use
ut
it as a tool to measure knowledge level, abilities and/
ol
or skills of their pupils either on a general level or in
ls
a specific field of study. Identify and analyse popular
oe
play a quiz.
• Allow selection of category based on subject area.
s:
2020-21
Chap 4.indd 79
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com
om
• Display the name(s) of world heritage site(s) on the
basis of the state input by the user.
.c
ns
io
ut
ol
ls
oe
kg
.d
w
w
//w
s:
tp
ht
2020-21
Chap 4.indd 80
Downloaded from https:// www.studiestoday.com
Downloaded from https:// www.dkgoelsolutions.com 19-Jul-19 3:31:21 PM