¿Por qué la lista (my_list) modifica el objeto?

Me encontré con este comportamiento peculiar accidentalmente:

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

¿Por qué mecanismo la list(a) llamadas list(a) desenrolla un nivel de recursión en la cadena de representación de sí misma?

list() hace una copia superficial. La lista externa ya no es el mismo objeto que la lista que contiene. Se imprime como cabría esperar.

El ... solo se muestra cuando un elemento se contiene a sí mismo, es decir, el mismo objeto. list(a) hace una copia de la lista, por lo que la a interna no es el mismo objeto. Solo muestra el ... cuando llega a “a dentro de”, no a “una list(a) interior list(a) “.