0

最大、最小、合計、平均、中央値など、入力辞書に基づいてさまざまな統計データを計算する関数がいくつかあります。

これらすべての機能を別の方法で使用するのではなく、1 つにまとめたいと考えています。そのため、呼び出し元は以下のようなことができます:

(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 は、たとえば、どの値が でminValueあり、どの値であるかを認識できません。maxValue

ただし、タプルを返すことはできます:

return value1, value2, value3

デモ:

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