我想将一个函数应用于列表中的所有元素,但我想实际更改元素(它是对象),而不是查看结果。我认为这是使用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'。它根本没有改变。 'Map'创建了新的列表。它总是如此。 – freakish
地图是否会创建新列表?我不敢相信我没有考虑过这个。 – cammil