Lecture 18 - Exercises

18A - Variables are References

For each of today’s exercises, give the answer to the exercise and draw the memory diagram at the end of the program.

  1. What does the following program print?

    a = ["foo", "bar"]
    b = a
    c = a[0:2]
    b[1] = "buzz"
    print(a[1], b[1], c[1])
  2. What is the output of each print call in the following program?

    a = [3, 4, 5]
    a.insert(0, 4)
    a[2:] = a[1:4]
    a.remove(4)
    a.append(a.index(5))
    del a[1]
    print(len(a))

Consider the following program:

a = [3]
b = a
a.append(4)
c = a[0]
d = b
a.extend((17, 19))
x = a[-2:]
e = x + [4]
  1. How many distinct list objects are created in the course of executing the program above? Be sure to include any lists that are created but not pointed at by any variable.
  2. At the end of the program, how many other variables (not counting a itself) point to the same list as a?