about the first one, regarding how you compute the memory complexity:

the representation of 0,1 is still seven - using "bin(ord("1"))" will return "0b110000" and not "0b0110000" because it rounds zeros from the left.

and regardless of that - i think in general, when you give the complexity analysis of things in the course,

if you state the assumptions you make (or assume), and show that you've considered all that there is to consider (or that they think is relevant), you will get the points.

you can assume the regular representation is of length 1 (as if you used huffman on a 2 letters alphabet), and as long as you give a contemplated answer you have done what they intended you to do.

regarding the second question,

it doesn't seem to make sense implementing this only to the list representation; it will creating doubling in the information, and the expanding function will create redundant strings along the way.

gl