Python: crear una llista de llistes buides

Segons la documentació oficial de Python, si fem:

>>> lists = [[]] * 3
>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]

Ens donarà problemes, perquè a la primera fila el que fem és crear tres punters al mateix lloc. És a dir, que tenim una llista d’un sol element i tres punters que porten a aquest element. Per tant, si modifiquem qualsevol dels elements estem mdificant tots els elements alhora.

Per tant, la solució passa per fer el següent:

>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

I així ja tenim una llista de llistes buides preparades per a ser omplertes de qualsevol cosa.

Un codi equivalent a això seria fer el següent, tot i que sembla ser una mica menys òptim perquè fas dos passos:

>>> lists = []
>>> for i in range(3):
		lists.append([])
Aquesta entrada es va publicar en Programació i classificat en . Bookmark el permalink. Publicar un comentari o deixar un trackback: URL del Trackback.

Publicar un comentari

El teu correu mai serà compartit o publicat. Els camps obligatoris estàn marcats *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>