cammil cammil - 2 months ago 4
Python Question

How to apply function to elements of a list?

I want to apply a function to all elements in the list, but I want to actually change the elements (which are objects), not view results. I think this is the problem with using

or list comprehensions.

class Thing(object):

# some collection of 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:

What is the way to do this?


And what's wrong with

for i in my_things:
    i.size = "big"

You don't want to use neither map nor list comprehansion because they actually create new lists. And you don't need that overhead, do you?