首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python代码中,我可以使用什么来代替lambda呢?

在Python代码中,我可以使用什么来代替lambda呢?
EN

Stack Overflow用户
提问于 2022-11-28 06:57:58
回答 2查看 38关注 0票数 0

我想知道在我的代码中是否有一个简单的替代lambda的方法。

代码语言:javascript
复制
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吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-11-28 07:07:07

您可以为它定义一个函数:

代码语言:javascript
复制
def return_attacks(self,k):
    return self.attacks[k]

并在键中使用该函数:

代码语言:javascript
复制
minval = min(self.attacks.keys(), key=(self.return_attacks))

我强烈建议您使用lambda函数,而且我认为现在很清楚,当lambda x : expr(x)func等效时,

代码语言:javascript
复制
def func(x):
    return expr(x)
票数 3
EN

Stack Overflow用户

发布于 2022-11-28 07:32:04

一只羔羊不应该吓到你!只是个小匿名函数。

它可以使用任意数量的参数,但只能有一个表达式。

代码语言:javascript
复制
minval = min(self.attacks.keys(), key=(lambda k: self.attacks[k]))

在这里,您将得到表达式min()作为minval的结果

min函数可以接受键,这里有更多关于这方面的内容。我可以看到它可能会令人困惑,但这个键与字典键不一样。这个键只是告诉min函数它应该如何运行的一种方式。

如果我们回到密码:

因此,该行基本上在self.attacks.keys()中找到最小值,其中包含一个lambda函数,该函数返回self.attacks[]中的每个元素

如果不想使用lambda,则可以在类中编写一个完全相同的函数。

代码语言:javascript
复制
def find_min_key(self, my_dict):
    return min(my_dict, key= my_dict.get)

您可以将其用作:

代码语言:javascript
复制
min_val = self.find_min_key(self.attacks)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74597006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档