Python:比较函数返回的两个数字(元组)的简单方法是什么?



考虑一个返回两个数字的函数:

def func():
    # ....
    return a,b

将比较运算符==应用于函数结果的最简单方法是什么?

我已经尝试过lambda但我正在寻找简单的东西:-

q = lambda x, y: x == y
[q(*func()) for i in range(16)]

我能想到的最短方法是检查

len(set(func())) == 1

(没有警告,因为你说它们是两个数字,所以可以散列(

但我个人只是将函数的结果分配给一个变量,然后以正常方式进行操作。

编辑:哦,现在我明白你的lambda了;它已经存在operator.eq

from operator import eq
eq(*func())

比较整洁。

如果可以修改func(),则可以向其添加第三个返回值,该值将指示前两个返回值是否相等,

from random import randint
def fun():
    a = randint(0,5)
    b = randint(0,5)
    return a, b, a == b
res = [fun()[2] for i in range(10)]

如果你不能修改func()那么你也可以使用装饰器,尽管它并不是更简单,也许只是比lambda更健壮和清晰:

from random import randint
def elem_equal(func):
    def wrapper():
        a,b = func()
        return a == b
    return wrapper
@elem_equal
def fun():
    a = randint(0,5)
    b = randint(0,5)
    return a, b
res = [fun() for i in range(10)]

装饰器elem_equal调用目标函数func()并返回其返回值的比较。

最新更新