如果您想使用map
来实现此操作,就不能使用lambda,因为lambda只能有表达式而不是赋值语句。而且它也必须返回某些内容。请改用以下方式:
from dataclasses import dataclass
@dataclass
class Feature:
name: str
active: bool
def activate_feature(feature: Feature):
feature.active = True
return feature
features = [Feature("name1",False), Feature("name2",False), Feature("name3",True)]
active_features = list(map(activate_feature, features))
print(active_features)
输出
[Feature(name='name1', active=True), Feature(name='name2', active=True), Feature(name='name3', active=True)]
如果您想使用Lambda,也可以这样做
from dataclasses import dataclass
@dataclass
class Feature:
name: str
active: bool
def activate(self):
self.active = True
return self
features = [Feature("name1", False), Feature("name2", False), Feature("name3", True)]
active_features = list(map(lambda f: f.activate(), features))
print(active_features)
输出
[Feature(name='name1', active=True), Feature(name='name2', active=True), Feature(name='name3', active=True)]
lambda
接受表达式而不是语句。赋值是一种语句,因此它无法工作。您不能真正使用列表推导,因为您的目标是更改状态而不是创建新列表。您想要一个具有其状态已切换的新对象列表,还是仅想要切换原始对象的状态? - Tomerikoo