inicializar tupla con listas vacias
Pau Cervera Badia
cervera en ffn.ub.es
Mie Sep 6 09:20:44 CEST 2006
Muchas grácias, no habia pensado en lo de hacer el cast con tuple.
Alexis Roda wrote:
> 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
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
--
Pau Cervera i Badia (e-mail cervera en ffn.ub.es)
{
Departament de Física Fonamental Martí i Franqués, 1
Universitat de Barcelona Planta 3, despatx 346 bis
08028 Barcelona
tel: +34 934 921 155 Spain
"Be careful of reading health books, you might die of a misprint."
-- Mark Twain
return http://www.ffn.ub.es/%7Ecervera/
}
------------ 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