Operador

lasizoillo lasizoillo en gmail.com
Lun Sep 10 21:22:53 CEST 2007


Viendo tu ejemplo y tras corroborar con la siguiente prueba:
>>> p.__hash__
<method-wrapper '__hash__' of list object at 0xb7d715ac>
>>> p = p + ['b']
>>> p.__hash__
<method-wrapper '__hash__' of list object at 0xb7d77b4c>
>>> p += ['c']
>>> p.__hash__
<method-wrapper '__hash__' of list object at 0xb7d77b4c>

creo que ya se que es lo que sucede:

p += ['x'] modifica el objeto p añadiendole el array ['x']
p = p + ['x'] retorna un nuevo objeto en p, resultado de añadir p y el
array ['x']

No se si me explico bien. El caso es que mientras operes con "+=" el
objeto p es el mismo. Cuando haces la otra asignacion el objeto es
nuevo. En el array q apuntabas al objeto p definido al principio, no
al obtenido al hacer la ultima asignacion.

Espero haberte aclarado las dudas.

Un saludo:

Javi

El 10/09/07, milreyes <reyesmil en intercable.net.ve> escribió:
> Saludos a todos.
>
> Quizás esta es una pregunta tonta, pero ¿por qué es diferente en la adición
> en listas el operador p+=['c'] a el operador p=p+['c']? Para explicarme
> mejor les envío este ejemplo:
>
>
>
> Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]
> on win32
>
> Type "help", "copyright", "credits" or "license" for more information.
>
> >>> p=['a']
>
> >>> q=[1,p]
>
> >>> q
>
> [1, ['a']]
>
> >>> p+=['b']
>
> >>> q
>
> [1, ['a', 'b']]
>
> >>> p=p+['c']
>
> >>> q
>
> [1, ['a', 'b']]  (Aquí esperaba: [1,['a','b','c'])
>
> >>> p
>
> ['a', 'b', 'c']
>
> >>>
>
> Gracias de antemano, Luis.
>
> _______________________________________________
> 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