Quiero aplicar una función a todos los elementos en la lista, pero realmente quiero cambiar los elementos (que son objetos), no ver los resultados. Creo que este es el problema con el uso de map()
o listas de comprensión.¿Cómo aplicar la función a los elementos de una lista?
class Thing(object):
pass
# some collection of things
my_things
# they are all big...
# produces SyntaxError: invalid syntax
[i.size = "big" for i in my_things]
# produces SyntaxError: lambda cannot contain assignment
map(lambda i: i.size="big", [i for i in my_things])
# no error, but is it the preferred way?
for i in my_things:
i.size="big"
¿Cuál es la manera de hacer esto?
No sabía que ese mapa hizo una nueva lista, que está criando algunas cejas. – lukecampbell
@lukecampbell Tiene que hacerlo. :) Considere este ejemplo: 'x = [- 1,1]' y 'map (lambda i: i> 0, x)'. Luego mira 'x' nuevamente. No cambió en absoluto. 'Map' creó una nueva lista. Y siempre lo hace. – freakish
¿el mapa crea nuevas listas? No puedo creer que no haya estado considerando eso. – cammil