我想將一個函數應用於列表中的所有元素,但我想實際更改元素(它是對象),而不是查看結果。我認爲這是使用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