inicializar tupla con listas vacias
Alexis Roda
alexis.roda.villalonga en gmail.com
Mar Sep 5 21:02:49 CEST 2006
En/na Pau Cervera Badia ha escrit:
> Se me ocurre,
>
> >>> n = 4
> >>> a = ()
> >>> for i in range(n):
> ... a = a + ([],)
> ...
sí, esta es la forma de hacerlo. Puedes utilizar /list comprehensions/
para reducirlo un poco, pero es lo mismo:
a = tuple([ [] for _ in xrange(n) ])
> pero no acabo de entender porqué el primer método no funciona. Supongo
> que tinene que ver con __mul__ de tuple que en vez de llamar al
> constructor de list copia la referencia?
__mul__ se limita a copiar el valor que recibe, una referencia a una
lista en tu caso.
Se ve mejor si utilizas variables extra.
El primer caso es equivalente a:
l = []
a = 4 * (l, )
utilizas cuatro veces la *misma* lista, (l, l, l, l).
En el segundo se crea una lista en cada iteración del bucle, cuatro
listas distintas:
for _ in xrange(4) :
l = []
a += (l, )
Saludos
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es