如何解决使用Python Lambda函数获取两个同时值
我想用公式x^2 + y^2 = 25
得到圆的所有点。 x
的值从-5到5,以0.01为步长。
同时对于每个math.sqrt(25 - x**2)
的值,y的值分别为-math.sqrt(25 - x**2)
和x
。我正在使用lambda函数来获取值。
lambda x: math.sqrt(25 - x**2)
很明显,它只能是y
的正值。如何在同一个函数中同时获得负值和正值?
谢谢。
解决方法
您可以返回一个元组:
lambda x: (y := math.sqrt(25 -x**2),-y)
,
如果您使用的是lambda,我将返回一个元组对:
f = lambda x: (math.sqrt(25 - x ** 2),-math.sqrt(25 - x ** 2))
pos,sub = f(3)
print(pos,sub)
尽管这样做的缺点是sqrt
被调用了两次。如果您真的想使用lambda
,我想您需要使用assignment expression :=
:
f = lambda x: (ans := math.sqrt(25 - x ** 2),-ans)
但是,在这一点上,我只使用完整的功能,因为我认为这不是很可读。
或者,只需在呼叫站点取反:
f = lambda x: math.sqrt(25 - x ** 2)
pos = f(3)
sub = -pos
这可能是最简单的选择,除非您直接将此函数传递给另一个需要某种格式的函数以供使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。