0

我有几个函数可以根据输入字典计算不同的统计数据,例如最大值、最小值、总和、平均值、中位数。

我想将所有这些功能组合成一个,而不是让它们以不同的方法使用。所以调用者可以执行以下操作:

(minValue, averageValue, maxValue) = myFunction(min, avg, max, data, key, ...)

或者

(minValue, maxValue) = myFunction(min, max)

我是 python 新手,我想了解如何使用集合来实现这一点!请不要提出其他解决此问题的方法,因为我也在尝试学习 python 和 python 语法。一个小例子会很棒。

4

2 回答 2

1
def myFunction(data,*args):
    return tuple( f(data) for f in args) )

例如:

myFunction(data, min, avg, max)
# returns (min(data), avg(data), max(data)), and you can get them by
minValue, averageValue, maxValue = myFunction(data, min, avg, max)

如果你想包括key

def myFunction2(data, *args, **kwargs):
    if 'key' not in kwargs:
        kwargs['key'] = lambda x: x # identity map (pass without a key)
    return tuple( f(data, key=kwargs['key']) for f in args )

例如:

myFunction2(['a','bc','f'], min, max)          # ('a', 'f')
myFunction2(['a','bc','f'], min, max, key=len) # ('a', 'bc')
于 2012-09-23T22:27:52.200 回答
0

您不能使用集合来执行此操作,因为集合没有顺序;因此 Python 不知道哪个值是 theminValue和哪个maxValue,例如。

可以返回一个元组:

return value1, value2, value3

演示:

>>> def foo():
...     return 1, 2, 3
...
>>> retval1, retval2, retval3 = foo()
>>> retval3
3
于 2012-09-23T22:28:14.747 回答