1. a. |----| | | V | values ----> [0, | , 2] The second entry in values is a reference to the list itself b. [0, [...], 2] c. [0, [...], 2] d. [0, [...], 2] e. This list is called "recursive" in that the list is defined with respect to itself. Each time we ask for the entry at index 1, we get the list itself. We could do this indefintely if we wanted, e.g.: >>> values[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1] etc. 2. When comparing a number (either an int or a float) and a string the numbers are always considered **less than** a string. The sort method arranges things such that if you compare any two items, the item that is less will occur earlier in the list. Given this, you can check some of the comparisons to get a better feeling for how things are sorted: >>> 2 < "1" True >>> "2" < "1" False >>> 1 < "a" True >>> "1" < "a" True >>> "1" < "2" True >>> 1 < "2" True >>> 3 < "2" True >>> "3" < "2" False >>> 98798798789 < "1" True >>> 98798798789 < "a" True