Python代码中如何用常规函数替代lambda?(附示例代码)
替换lambda为常规函数的解决方案
原代码中的lambda用于为min()函数指定排序规则——根据self.attacks字典中key对应的值来筛选出值最小的key。我们可以把这个逻辑提取成常规函数,完全替代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: # 定义常规函数替代lambda,获取攻击对应的数值 def get_attack_value(key): return self.attacks[key] # 使用常规函数作为min的key参数 minval = min(self.attacks.keys(), key=get_attack_value) 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
关键说明
- 新增的
get_attack_value函数和原lambda逻辑完全一致:接收一个key参数,返回self.attacks[key]的值。 - 直接将
min()函数的key参数从lambda替换为这个常规函数即可,功能完全等价。 - 如果需要在类的多个方法中复用这个逻辑,也可以把它定义为类的辅助方法(比如命名为
_get_attack_value),调用时传self._get_attack_value即可。
内容的提问来源于stack exchange,提问作者Elaine Pargo
相关产品推荐
相关产品推荐

