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