Problemas con python 2.4

Vicente Tamarit tamarit en gmail.com
Dom Ene 1 21:22:57 CET 2006


Gracias por contestar Jesus.
Estoy mirando el módulo de copy y ahora mismo lo voy a probar, mil gracias.
Hasta ahora lo que había leido para copiar listas, eran las dos formas que
cometnaba, con [:] y concatenando la lista vacía y se me había ocurrido que
tal vez eso fallaba al intentar copiar con ese método lsitas muy grandes.
El segundo problema ya está resuelto no se exactamente qué está saliendo
mal, pero lo que he hecho ha sido desenredar un poco el código y he
substituido ese código por este otro:
        if (val_q=='+' or val_q=='-') and val_p==' ':
            Mp[0].remove(p)
            Mp[0].append([p[0],val_q])
Básicamente el elemento p es una lista de dos elementos, así que en vez de
hcaer la asignación inserto directamente y solucionado.

Ya que estamos si sabéis de algún buen manual de Python (libro,
docuemtnación, lo que sea) que trate temas relacionados con el
funcionamiento interno del intérprete (como asignación de memoria, etc) os
estaría muy agradecido.

Un saludo
 Vicent Tamarit



On 1/1/06, Jesus Cea <jcea en argo.es> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Vicente Tamarit wrote:
> > lista1=[ele1,ele2,...elen]
> > lista2=lista1[:]
>
> Una lista es un objecto mutable. Usa el módulo de clonación:
> http://docs.python.org/lib/module-copy.html
>
> Lo que más te conviene es el "shallow copy".
>
> > Eso sí en el intérprete todo funciona debidamente, puede ser algún
> problema
> > al trabajar con listas grandes??
>
> La mutabilidad afecta a cualquier lista, independiente de su tamaño. No
> entiendo lo que comentas de la memoria.
>
> > Por otro lado pasa una cosa aún más marciana, parto de este código:
> >         if (val_q=='+' or val_q=='-') and val_p==' ':
> >             Mp[0].remove(p)
> >             p[1]=val_q
> >             Mp[0].append(p)
> > Sé que la construcción es ya de por sí rebuscada, pero no es normal que
> en
> > algunas ejecuciones cuando ejecuta Mp[0].remove(p), casque porque
> intenta
> > borrar el elemento p modificado con val_q. Vamos que primero hace la
> > asignación y luego el remove O_O
>
> Sin saber qué es "p", "Mp", etc, no te puedo decir mucho. Tiene pinta de
> que intentas borrar un elemento que ya no existe, pero eso es algo que
> no se ve en el código que has enviado.
>
> Te sugiero que nos digas qué quieres hacer. Seguro que hay formas más
> fáciles (y que funcionan :-) de hacerlo :).
>




Más información sobre la lista de distribución Python-es