2009-02-14 10 views
20

2.5.2 ¿Por qué Python tienen el siguiente comportamientoPython extender con un error de lista vacía?

>>>[2].extend([]) == [2] 
False 

>>> [2].extend([]) == None 
True 

$ python --version 
Python 2.5.2 

Asumo que no estoy entendiendo algo aquí, pero intuitivamente yo creo que [2] .extend ([]) debe rendir [2]

+0

¿Quién necesita intuición cuando hay un intérprete? Simplemente 'print [2] .extend ([]) '. – tzot

Respuesta

35

Extender es un método de lista, que lo modifica pero no devuelve self (devolviendo None en su lugar). Si necesita el valor modificado como valor de expresión, use +, como en [2]+[].

9

Exactamente.

>>> x = [2] 
>>> x.extend([]) # Nothing is printed because the return value is None 
>>> x == [2] 
True 
>>> x 
[2] 

Lo hacen a propósito para que se le recuerde que la función de extensión es en realidad modificando la lista en contexto. Lo mismo con sort(). Siempre devuelve None.

Cuestiones relacionadas