您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在lambda中自动元组解包的python3等效项是什么?

在lambda中自动元组解包的python3等效项是什么?

不,没有其他办法。您覆盖了所有内容。可行的方法是在Python想法邮件列表中提出此问题,但要准备在那儿争论很多以获得更多关注。

实际上,只是不说“没有出路”,第三种方法可能是实现一个更高级别的lambda调用,只是为了展开参数-但这将比您的两个建议效率更高,更难以阅读:

min(points, key=lambda p: (lambda x,y: (x*x + y*y))(*p))

到目前为止,Python 3.8 alpha1已可用,并且已实现PEP 572赋值表达式。

因此,如果使用技巧在lambda内执行多个表达式-我通常通过创建一个元组并仅返回它的最后一个组件来做到这一点,可以这样做:

>>> a = lambda p:(x:=p[0], y:=p[1], x ** 2 + y ** 2)[-1]
>>> a((3,4))
25

应该记住,与具有完整功能相比,这种代码很少会更具可读性或实用性。仍然有可能的用途- 如果有各种各样的单行代码可以对此进行操作point,则值得拥有一个namedtuple,并使用赋值表达式将输入序列有效地“投射”到namedtuple:

>>> from collections import namedtuple
>>> point = namedtuple("point", "x y")
>>> b = lambda s: (p:=point(*s), p.x ** 2 + p.y ** 2)[-1]
python 2022/1/1 18:28:56 有588人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶