我有几个函数可以根据输入字典计算不同的统计数据,例如: max,min,sum,average,median。
我想将所有这些功能合并为一个,而不是将它们放在不同的方法中。所以来电者可以做类似下面的事情:
(minValue, averageValue, maxValue) = myFunction(min, avg, max, data, key, ...)
或
(minValue, maxValue) = myFunction(min, max)
我是python的新手,我试图了解如何使用集合实现这一目标! 请不要提出解决此问题的其他方法,因为我也在尝试学习python和python语法。一个小例子很棒。
答案 0 :(得分: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')
答案 1 :(得分:0)
您不能使用集合来执行此操作,因为集合没有排序;因此Python不会知道minValue
和maxValue
是哪个值,例如。
你可以返回一个元组:
return value1, value2, value3
演示:
>>> def foo():
... return 1, 2, 3
...
>>> retval1, retval2, retval3 = foo()
>>> retval3
3