Я хочу применить функцию ко всем элементам в списке, но я хочу фактически изменить элементы (объекты), а не просматривать результаты. Я думаю, что это проблема с использованием map()
или списком понятий.Как применить функцию к элементам списка?
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"
Каков способ сделать это?
Я не знал, что карта сделал новый список, который поднимая некоторые брови. – lukecampbell
@lukecampbell Он должен. :) Рассмотрим этот пример: 'x = [- 1,1]' и 'map (lambda i: i> 0, x)'. Затем снова посмотрите на 'x'. Это совсем не изменилось. «Карта» создала новый список. И это всегда так. – freakish
карта создает новые списки? Я не могу поверить, что я об этом не думал. – cammil