For each of today’s exercises, give the answer to the exercise and draw the memory diagram at the end of the program.
What does the following program print?
= ["foo", "bar"]
a = a
b = a[0:2]
c 1] = "buzz"
b[print(a[1], b[1], c[1])
What is the output of each print
call in the
following program?
= [3, 4, 5]
a 0, 4)
a.insert(2:] = a[1:4]
a[4)
a.remove(5))
a.append(a.index(del a[1]
print(len(a))
Consider the following program:
= [3]
a = a
b 4)
a.append(= a[0]
c = b
d 17, 19))
a.extend((= a[-2:]
x = x + [4] e
a
itself) point to the same list as a
?Implement the following function. Notice that this function
returns a new list and leaves in_list
unmodified.
def copy_list(in_list):
""" Return a new list object containing
the same elements as in_list.
Precondition: in_list's contents are
all immutable. """
# Example usage:
= [1, 2, 3, 4]
a = copy_list(a)
b 0] = 0
b[print(a[0], b[0])
# prints 1, 0
Implement the following function. Notice that this function does not return a new list, but modifies the given list in place. Because the list object being modified is the same one as the caller passed in, we do not need to return another reference to the same object.
def snap(avengers):
""" Remove a randomly chosen half of the
elements from the given list of avengers
"""
# Example usage:
= [1, 2, 3, 4]
a
snap(a)print(a)
# prints [2, 3]
…which brings up an important question: if the world’s population at the time of the snap was odd, did Thanos round up or down?