【发布时间】:2022-11-28 15:18:47
【问题描述】:
我想知道我的代码中是否有 lambda 的简单替代方法。
def add_attack(self, attack_name):
if attack_name in self.known_attacks and attack_name not in self.attacks:
try:
assert(len(self.attacks) < 4)
self.attacks[attack_name] = self.known_attacks.get(attack_name)
return True
except:
#find the min value of self.attacks
minval = min(self.attacks.keys(), key=(lambda k: self.attacks[k]))
for keys, values in self.attacks.items():
if self.attacks[minval] == values and min(minval, keys) == keys:
minval = keys
del self.attacks[minval]
self.attacks[attack_name] = self.known_attacks.get(attack_name)
return True
else:
return False
我仍在学习 python,而 lambda 函数让我失望,因为我还没有学到那么多。除了使用 lambda,有人可以帮我用另一个函数来代替 lambda 吗?谢谢!
【问题讨论】:
-
如果您考虑一下 lambda 表达式的作用,它并没有那么吓人:它接受给它的任何参数(通常您会在将 lambda 传递给的函数的文档中找到这个参数列表);它评估其中的任何表达式,并返回该值。在这种情况下,参数列表是
self.attacks的键,作为“键”返回的值是self.attacks中该键的值。min函数使用键来决定哪个是最小的。你对 lambda 感到困惑吗?