mutator - python property example
Anexar convierte mi lista en NingunoTipo (3)
Elimine su segunda línea aList = aList.append(''e'')
y use solo aList.append("e")
, esto debería eliminar ese problema.
En Python Shell, entré:
aList = [''a'', ''b'', ''c'', ''d'']
for i in aList:
print(i)
y consiguió
a
b
c
d
pero cuando lo intenté
aList = [''a'', ''b'', ''c'', ''d'']
aList = aList.append(''e'')
for i in aList:
print(i)
y consiguió
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
for i in aList:
TypeError: ''NoneType'' object is not iterable
¿Alguien sabe lo que está pasando? ¿Cómo puedo solucionarlo?
En general, lo que quieres es la respuesta aceptada. Pero si desea el comportamiento de anular el valor y crear una nueva lista (lo cual es razonable en algunos casos ^), lo que podría hacer en su lugar es usar el "operador splat", también conocido como desempaquetado de listas:
aList = [*aList, ''e'']
#: [''a'', ''b'', ''c'', ''d'', ''e'']
O, si necesita ser compatible con python 2, use el operador +
:
aList = aList + [''e'']
#: [''a'', ''b'', ''c'', ''d'', ''e'']
^ Hay muchos casos en los que desea evitar los efectos secundarios de la mutación con .append()
. Por un lado, imagine que desea agregar algo a una lista que haya tomado como un argumento de función. Quienquiera que esté usando la función probablemente no espera que la lista que proporcionaron vaya a ser cambiada. Usar algo como esto mantiene su función "pure" sin "efectos secundarios" .
list.append
es un método que modifica la lista existente. No devuelve una nueva lista; devuelve None
, como la mayoría de los métodos que modifican la lista. Simplemente haga aList.append(''e'')
y su lista obtendrá el elemento adjunto.