Warum ändert list (my_list) das Objekt?

Ich bin aus Versehen auf dieses merkwürdige Verhalten gestoßen:

>>> a = []
>>> a[:] = ['potato', a]
>>> print a
['potato', [...]]
>>> print list(a)
['potato', ['potato', [...]]]

Durch welchen Mechanismus ruftlist(a) Eine Rekursionsebene in der Zeichenfolgendarstellung von sich selbst abwickeln?