Multiple Choice Questions
Multiple Choice Questions
Question 1
1. integers
2. floats
3. lists
4. tuples
5. all of these ✓
Question 2
1. L=[]✓
2. L = list(0)
3. L = list( ) ✓
4. L = List(empty)
Question 3
Which of the following will return the last element of a list L with 5 elements?
1. L[5]
2. L[4] ✓
3. L[-1] ✓
4. L[6]
Question 4
1. [1, 2] * 2
2. [1, 2, 2]
3. [1, 1, 2, 2]
4. [1, 2, 1, 2] ✓
Question 5
1. [1, 2, 3, 4, 5, 6]
2. [1, 3, 5, 2, 4, 6] ✓
3. [3, 7, 11]
4. [1, 3, 5, [2, 4, 6]]
Question 6
Given a list L= [10, 20, 30, 40, 50, 60, 70], what would L[1 : 4] return?
Question 7
Given a list L= [10, 20, 30, 40, 50, 60, 70], what would L[2 : -2] return?
Question 8
Given a list L= [10, 20, 30, 40, 50, 60, 70], what would L[-4 : -1] return?
Question 9
Given a list L= [10, 20, 30, 40, 50, 60, 70], what would L[-3 : 99] return?
Question 10
To find the last element of list namely 'smiles' in Python, .......... will be used.
1. smiles[0]
2. smiles[-1] ✓
3. smiles[lpos]
4. smiles[:-1]
Question 11
Out of the following, what is correct syntax to copy one list into another?
1. listA = listB[ ]
2. listA = listB[:] ✓
3. listA = listB[ ]( )
4. listA = list(listB) ✓
Question 12
1. [0, 1, 2, 3]
2. [1, 2, 3]
3. [0, 1, 2] ✓
4. 0, 1, 2
Question 13
1. listl = list( )
2. listl = [ ]
3. listl = list([1, 2, 3])
4. all of these ✓
Question 14
Question 15
1. H
2. n
3. Hasan
4. Dia
5. a✓
Question 16
l = [None] * 10
print(len(l))
1. 10 ✓
2. 0
3. Syntax Error
4. None
Question 17
Consider the list aList - ["SIPO", [1, 3, 5, 7] ]. What would the following code print?
print(aList[0][1], aList[1][1])
1. S, 3
2. S, 1
3. I, 3 ✓
4. I, 1
Question 18
Which of the following is a standard Python library function and not an exclusively list
function?
1. append( )
2. remove( )
3. pop( )
4. len( ) ✓
Question 19
1. add( )
2. append( ) ✓
3. extend( )
4. none of these
Question 20
1. add( )
2. append( )
3. extend( ) ✓
4. none of these
Question 21
1. max( )
2. min( )
3. sort( )
4. sorted( ) ✓
Question 22
Which of the following can delete an element from a list if the index of the element is given?
1. pop( )
2. remove( )
3. del ✓
4. all of these
Question 23
Which of the following can delete an element from a list, if its value is given?
1. pop( )
2. remove( ) ✓
3. del
4. all of these
Question 24
Which of the following searches for an element in a list and returns its index?
1. search( )
2. find( )
3. index( ) ✓
4. lsearch( )
Question 25
1. list( ) ✓
2. new( )
3. copy( ) ✓
4. = operator
Question 1
Lists are mutable data types and thus their values can be changed.
Question 2
Question 4
Question 5
Question 6
Question 7
Question 8
Question 9
The pop() function is used to delete element to remove an element from designated index in a
list.
Question 10
Question 11
The sort() function sorts a list and makes changes in the list.
Question 12
True/False Questions
Question 1
Question 2
The pop( ) and remove( ) are similar functions.
False
Question 3
Question 4
Question 5
Question 6
Question 7
Question 8
Question 9
The del statement can only delete list slices and not single elements from a list.
False
Question 10
Question 1
Answer
Python lists are containers that can store an ordered list of values of same or different data
types together in a single variable. The fact that elements of a list need not be homogeneous
makes them highly adaptable and powerful data structure in Python. Lists provide fast access
to its elements using index numbers. Python lists are mutable which makes them memory
efficient. They serve as the basic building blocks for programs that process large amounts of
data.
Question 2
What do you understand by mutability? What does "in place" memory updation mean?
Answer
Mutability means that the value of an object can be updated by directly changing the contents
of the memory location where the object is stored. There is no need to create another copy of
the object in a new memory location with the updated values. This updation of the existing
memory location of the object is called as in place memory updation.
Question 3
Start with the list [8, 9, 10]. Do the following using list functions:
Answer
1. listA[1] = 17
2. listA.extend([4, 5, 6])
3. listA.pop(0)
4. listA.sort()
5. listA = listA * 2
6. listA.insert(3, 25)
Question 4
If a is [1, 2, 3]
Answer
1. a * 3 ⇒ [1, 2, 3, 1, 2, 3, 1, 2, 3]
[a, a, a] ⇒ [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
So, a * 3 repeats the elements of the list whereas [a, a, a] creates nested list.
2. Yes, both a * 3 and a + a + a will result in [1, 2, 3, 1, 2, 3, 1, 2, 3]
3. a[1:1] = 9 will cause an error because when list is modified using slices, the value
being assigned must be a sequence but 9 is an integer not a sequence.
4. Both a[1:2] = 4 and a[1:1] = 4 will cause error because when list is modified using
slices, the value being assigned must be a sequence but 4 is an integer not a sequence.
Assuming the question was a[1:2] = [4] and a[1:1] = [4], a[1:2] = [4] will change
element at index 1 to 4 as a[1:2] gives a slice with a[1] as its only element. Thus, a
becomes [1, 4, 3]. Coming to a[1:1] = [4], a[1:1] returns an empty slice so 4 is
inserted into the list at index 1. Thus, a becomes [1, 4, 2, 3].
Question 5
What's a[1 : 1] if a is a list of at least two elements? And what if the list is shorter?
Answer
a[x:y] returns a slice of the sequence from index x to y - 1. So, a[1 : 1] will return an empty
list irrespective of whether the list has two elements or less as a slice from index 1 to index 0
is an invalid range.
Question 6
How are the statements lst = lst + 3 and lst += [3] different, where lst is a list? Explain.
Answer
The statement lst = lst + 3 will give error as + operator in Python requires that both its
operands should be of the same type but here one operand is list and other is integer. The
statement lst += [3] will add 3 at the end of the lst as += when used with lists requires the
operand on the right side to be an iterable and it will add each element of the iterable to the
end of the list.
Question 7
How are the statements lst += "xy" and lst = lst + "xy" different, where lst is a list? Explain.
Answer
The statement lst = lst + "xy" will give error as + operator in Python requires that both its
operands should be of the same type but here one operand is list and other is string. The
statement lst += "xy" will add 'x' and 'y' at the end of the lst as += when used with lists
requires the operand on the right side to be an iterable and it will add each element of the
iterable to the end of the list.
Question 8
What's the purpose of the del operator and pop method? Try deleting a slice.
Answer
The del statement is used to remove an individual element or elements identified by a slice. It
can also be used to delete all elements of the list along with the list object. For example,
lst = [1, 2, 3, 4, 5, 6, 7, 8]
del lst[1] # delete element at index 1
del lst[2:5] # delete elements from index 2 to 4
del lst # delete complete list
pop() method is used to remove a single element from the given position in the list and return
it. If no index is specified, pop() removes and returns the last element in the list. For example,
lst = [1, 2, 3, 4, 5, 6, 7, 8]
# removes element at
# index 1 i.e. 2 from
# the list and stores
# in variable a
a = pop(1)
Question 9
What does each of the following expressions evaluate to? Suppose that L is the list
["These", ["are", "a", "few", "words"], "that", "we", "will", "use"].
1. L[1][0::2]
2. "a" in L[1][0]
3. L[:1] + L[1]
4. L[2::2]
5. L[2][2] in L[1]
Answer
1. ['are', 'few']
2. True
3. ['These', 'are', 'a', 'few', 'words']
4. ['that', 'will']
5. True
Explanation
1. L[1] returns ["are", "a", "few", "words"]. L[1][0::2] returns a slice of ["are", "a",
"few", "words"] starting at index 0 covering every alternate element till the end of the
list. So, final output is ['are', 'few'].
2. L[1][0] is "are". As "a" is present in "are" so output is True.
3. L[:1] return L[0] i.e. ["These"]. L[1] returns ["are", "a", "few", "words"]. + operator
adds the two in a single list to give the final output as ['These', 'are', 'a', 'few', 'words'].
4. L[2::2] returns a slice of L starting at index 2 covering every alternate element till the
end of the list. So, final output is ['that', 'will'].
5. L[1] is ["are", "a", "few", "words"]. L[2][2] is "a". As "a" is present in L[1] so output
is True.
Question 10
What are list slices? What for can you use them?
Answer
List slice is an extracted part of the list containing the requested elements. The list slice is a
list in itself. All list operations can be performed on a list slice. List slices are used to copy
the required elements to a new list and to modify the required parts of the list. For example,
lst = [1, 2, 3, 4, 5]
lst2 = lst[1:4] #lst2 is [2, 3, 4]
Question 11
Answer
Slice operator copies only the requested elements of the original list into a new list.
Question 12
Compare lists with strings. How are they similar and how are they different?
Answer
The similarity between Lists and Strings in Python is that both are sequences. The differences
between them are that firstly, Lists are mutable but Strings are immutable. Secondly,
elements of a list can be of different types whereas a String only contains characters that are
all of String type.
Question 13
What do you understand by true copy of a list? How is it different from shallow copy?
Answer
True copy of a list means that the elements of the original list are copied to new memory
locations and the new list contains references to these new memory locations for each
element of the list. Hence, in case of true copy changes made to the original list will not
reflect in the copied list and vice versa.
Incase of shallow copy of a list, the elements of the original list are not copied to new
memory locations. Both the new list and the original list refer to the same memory locations
for the elements of the list. Hence, changes made to one of the list reflect in the other list as
well.
Question 14
An index out of bounds given with a list name causes error, but not with list slices. Why?
Answer
When we use an index, we are accessing a constituent element of the list. If the index is out
of bounds there is no element to return from the given index hence Python throws list index
out of range error whereas list slicing always returns a subsequence and empty subsequence
is a valid sequence. Thus, when a list is sliced outside the bounds, it still can return empty
subsequence and hence Python gives no errors and returns empty subsequence.
Question 15
Answer
For appending to a list, append() function is used. For extending a list, extend() function is used.
The append() function can add a single element to The extend() function can add multiple elements fro
the end of a list. as argument.
After append(), the length of the list will increase After extend() the length of the list will increase by
by 1 element only. given as argument to extend()
Question 16
Answer
No, for max() and min() to work on a list, the list must contain all elements of same type
(non-complex type) and for sum() to work, the list must contain the elements which can be
added such as numbers.
Question 17
Answer
sort( ) sorted( )
It does not return anything (no return value). It It returns a newly created sorted list. It does not cha
modifies the list in place. sequence.
Question 1
What is the difference between following two expressions, if lst is given as [1, 3, 5]
Answer
(i)
lst * 3 will give [1, 3, 5, 1, 3, 5, 1, 3, 5] but the original lst will remains unchanged, it will be
[1, 3, 5] only.
lst *= 3 will also give [1, 3, 5, 1, 3, 5, 1, 3, 5] only but it will assign this result back to lst so
lst will be changed to [1, 3, 5, 1, 3, 5, 1, 3, 5].
(ii)
lst + 3 will cause an error as both operands of + operator should be of same type but here one
operand is list and the other integer.
lst += [3] will add 3 to the end of lst so lst becomes [1, 3, 5, 3].
Question 2
1. L1 == L2
2. L1.upper( )
3. L1[3].upper( )
4. L2.upper( )
5. L2[1].upper( )
6. L2[1][1].upper( )
Answer
L1.upper( ) will cause an error as upper() method can be called with Strings not Lists.
L2.upper( ) will cause an error as upper() method can be called with Strings not Lists.
L2[1].upper( ) will cause an error as L2[1] is a list — [ "is", "another"] and upper()
method cannot be called on Lists.
Question 3
From the previous question, give output of expressions that do not result in error.
Answer
Question 4
Answer
1. L1[2:5]
2. L1[4]
3. L1[4:5]
4. L1[1::2]
Question 5
Given a list L1 = [3, 4.5, 12, 25.7, [2, 1, 0, 5], 88], which function can change the list to:
Answer
1. L1.pop(4)
2. del L1[4:6]
3. del L1[:4]
Question 6
L1 = [1, 3, 5, 7, 9]
print (L1 == L1.reverse( ) )
print (L1)
Answer
Output
False
[9, 7, 5, 3, 1]
Explanation
L1 is not equal to its reverse so L1 == L1.reverse( ) gives False but L1.reverse( ) reverses L1
in place so after that statement executes, L1 becomes [9, 7, 5, 3, 1].
Question 7
Output
Explanation
my_list[2:3] = [] removes element at index 2 of my_list so it becomes ['p', 'r', 'b', 'l', 'e', 'm'].
my_list[2:5] removes elements at indexes 2, 3, and 4 so now my_list becomes ['p', 'r', 'm'].
Question 8
1
2
[13, 18, 11, 16, 13, 18, 13, 3]
Explanation
List1.index(18) gives the first index of element 18 in List1 which in this case is 1.
List1.count(18) returns how many times 18 appears in List1 which in this case is 2.
List1.count(13) returns 3 as 13 appears 3 times in List1. List1.append(List1.count(13)) add
this 3 to the end of List1 so it becomes [13, 18, 11, 16, 13, 18, 13, 3].
Question 9
Odd = [1,3,5]
print( (Odd +[2, 4, 6])[4] )
print( (Odd +[12, 14, 16])[4] - (Odd +[2, 4, 6])[4] )
Answer
Output
4
10
Explanation
Odd + [2, 4, 6] will return [1, 3, 5, 2, 4, 6]. The element at index 4 of this list is 4 so the first
output is 4. (Odd +[12, 14, 16])[4] is 14 and (Odd +[2, 4, 6])[4] is 4. 14 - 4 = 10 which is the
second output.
Question 10
Output
True
False
Explanation
As corresponding elements of list a and b are equal hence a == b returns True. a is b returns
False as a and b are two different list objects referencing two different memory locations.
Question 11
Predict the output of following two parts. Are the outputs same? Are the outputs different?
Why?
(a)
As we can see, outputs of the two parts are different. The reason is that in part (a), the
statement L3 = L2 creates a shallow copy of L2 in L3 i.e. both the variables L2 and L3 point
to the same list. Hence, when element at index 1 of L2 is changed to 5, that change is visible
in L3 also. On the other hand in part (b), the statement L3 = list(L2) creates a true copy (also
called deep copy) of L2 so L3 points to a different list in memory which has the same
elements as L2. Now when element at index 1 of L2 is changed to 5, that change is not
visible in L3.
Question 12
Answer
Question 13a
Question 13b
An + 2 will cause an error because remove() function does not return the removed element so
An will be None. Addition operator (+) does not allow any of its operands to be None hence,
it will raise a TypeError.
Question 14a
L1 = [3, 4, 5]
L2 = L1 * 3
print(L1 * 3.0)
print(L2)
Answer
The line print(L1 * 3.0) causes an error as Python does not allow multiplying a list with a
non-int number and 3.0 is of float type.
Question 14b
The line print(L1[-1:-2:-3:-4]) causes an error as its syntax is invalid. The correct syntax for
slicing a list is L1[start:stop:step].
Question 15
Output
523
[]
<class 'list'> <class 'str'>
Explanation
The loop while x will continue executing as long as the length of list x is greater than 0. y is
initially an empty string. Inside the loop, we are adding the last element of x to y and after
that we are removing the last element of x from x. So, at the end of the loop y becomes 523
and x becomes empty. Type of x and y are list and str respectively.
Question 16
Complete the code to create a list of every integer between 0 and 100, inclusive, named
nums1 using Python, sorted in increasing order.
Answer
nums1 = list(range(101))
Question 17
Let nums2 and nums3 be two non-empty lists. Write a Python command that will append the
last element of nums3 to the end of nums2.
Answer
nums2.append(nums3[-1])
Question 18
Consider the following code and predict the result of the following statements.
1. counts is nums
2. counts is add([1, 2], [3, 4])
Answer
1. Output is True as both nums and counts refer to the same list.
2. This will cause an error as add function is not defined in the above code.
Question 19
Output
Explanation
list(range(0, 51, 4)) will create a list from 0 to 48 with a step of 4 so numbers will be [0, 4, 8,
12, 16, 20, 24, 28, 32, 36, 40, 44, 48]. For loop will traverse the list one number at a time. if
not number % 3 means if number % 3 is equal to 0 i.e. number is divisible by 3. The numbers
divisible by 3 are added to the results list and after the loop results list is printed.
Question 20
Following code prints the given list in ascending order. Modify the code so that the elements
are printed in the reverse order of the result produced by the given code.
Output
48 36 24 12 0
Type C: Programming Practice/Knowledge based
Questions
Question 1
Solution
for i in range(len(lst)):
lst[i] += n
Output
Question 2
Solution
Output
Question 3
Write a program that inputs two lists and creates a third, that contains all elements of the first
followed by all elements of the second.
Solution
Question 4
Ask the user to enter a list containing numbers between 1 and 12. Then replace all of the
entries in the list that are greater than 10 with 10.
Solution
for i in range(len(l)):
if l[i] > 10:
l[i] = 10
Output
Enter list having numbers between 1 & 12: [1, 3, 15, 8, 20]
List after removing numbers greater than 10:
[1, 3, 10, 8, 10]
Question 5
Ask the user to enter a list of strings. Create a new list that consists of those strings with their
first characters removed.
Solution
for i in range(len(l1)):
l2.append(l1[i][1:])
Output
Question 6
Write a program to check if a number is present in the list or not. If the number is present,
print the position of the number. Print an appropriate message if the number is not present in
the list.
Solution
if n in l:
print(n, "found at index", l.index(n))
else :
print(n, "not found in list")
Output
=====================================
Question 7a
Solution
l = []
for i in range(50):
l.append(i)
Output
Question 7b
Create the following lists using a for loop:
Solution
l = []
Output
Question 7c
Solution
l = []
print("Created List:")
print(l)
Output
Created List:
['a', 'bb', 'ccc', 'dddd', 'eeeee', 'ffffff', 'ggggggg',
'hhhhhhhh', 'iiiiiiiii', 'jjjjjjjjjj', 'kkkkkkkkkkk',
'llllllllllll', 'mmmmmmmmmmmmm', 'nnnnnnnnnnnnnn',
'ooooooooooooooo', 'pppppppppppppppp', 'qqqqqqqqqqqqqqqqq',
'rrrrrrrrrrrrrrrrrr', 'sssssssssssssssssss',
'tttttttttttttttttttt', 'uuuuuuuuuuuuuuuuuuuuu',
'vvvvvvvvvvvvvvvvvvvvvv', 'wwwwwwwwwwwwwwwwwwwwwww',
'xxxxxxxxxxxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyyyyyyyyyyy',
'zzzzzzzzzzzzzzzzzzzzzzzzzz']
Question 8
Write a program that takes any two lists L and M of the same size and adds their elements
together to form a new list N whose elements are sums of the corresponding elements in L
and M. For instance, if L = [3, 1, 4] and M = [1, 5, 9], then N should equal [4,6,13].
Solution
for i in range(len(L)):
N.append(L[i] + M[i])
print("List N:")
print(N)
Output
Question 9
Write a program rotates the elements of a list so that the element at the first index moves to
the second index, the element in the second index moves to the third index, etc., and the
element in the last index moves to the first index.
Solution
l = l[-1:] + l[:-1]
print("Rotated List")
print(l)
Output
Write a program that reads the n to display nth term of Fibonacci series.
The program prompts for element and prints out the value of that element of the Fibonacci
sequence.
Thus:
input 7, produces 13
input 9, produces 34
Hints:
A Don't try to just type out the entire list. It gets big very fast. Element 25 is 75205. Element
100 is 354224848179261915075. So keep upper limit of n to 20.
Solution
n = int(input("Enter n: "))
if (n > 20):
print("n should be less than or equal to 20")
else :
a = 0
b = 1
c = a + b
for i in range(3, n + 1):
a = b
b = c
c = a + b
Output
Enter n: 7
7 term of Fibonacci series = 13
=====================================
Enter n: 9
9 term of Fibonacci series = 34
=====================================
Enter n: 25
n should be less than or equal to 20
Question 11a
Solution
for i in range(len(l)):
length = len(l[i])
if length > largeLen:
largeLen = length
largeIdx = i
Output
Question 11b
'''L is a list of numbers. Print a new list where each element is the corresponding element of
list L summed with number num.'''
Solution
l2 = []
for i in l1:
l2.append(i + num)
print("New list:")
print(l2)
Output
Question 12
Write a program to read two lists num and denum which contain the numerators and
denominators of same fractions at the respective indexes. Then display the smallest fraction
along with its index.
Solution
small = 0.0
smallIdx = 0
for i in range(len(num)):
t = num[i] / denum[i]
if t < small:
small = t
smallIdx = i
Output
Question 13
Write a program to display the maximum and minimum values from the specified range of
indexes of list.
Solution
Output
Enter the list: [89, 42, 12, 56, 35, 2, 8, 7, 13, 69]
Enter start index: 3
Enter stop index: 8
Maximum = 56
Minimum = 2
Question 14
Write a program to move all duplicate values in a list to the end of the list.
Solution
l = dedup + dup
print("Modified List:")
print(l)
Output
Enter the list: [20, 15, 18, 15, 7, 18, 12, 13, 7]
Modified List:
[20, 15, 18, 7, 12, 13, 15, 18, 7]
Question 15
Write a program to compare two equal sized lists and print the first index where they differ.
Solution
for i in range(len(l1)):
if l1[i] != l2[i]:
print("Lists differ at index", i)
break;
else:
print("Lists are equal")
Output
=====================================