Pythonic将列表转换为多个变量函数的输入的方法

时间:2014-08-29 15:46:23

标签: python idiomatic

我开始感到有点愚蠢,因为没有搞清楚......

说我有两个变量的函数:

def testfun(x,y):
    return x*y

现在我有一个值列表,比如说[2,3],我想把它作为值输入到函数中。最恐怖的方法是什么?我想到了这样的事情:

def listfun(X):
    X_as_strs = str(X).strip('[]')
    expression = 'testfun({0})'.format(X_as_strs)
    return eval(expression)

...但它看起来非常不像pythonic,我也不想处理字符串!是否有一个内衬(例如)会让我觉得内心充满了刺激和可爱(就像Python经常发生的那样)?我觉得它可能是一种疯狂的东西......

1 个答案:

答案 0 :(得分:2)

*符号在这里很适合你。

def testfun(x,y):
    return x*y

def listfun(X):
    return testfun(*X)

>>> testlist = [3,5]
>>> listfun(testlist)
15
>>> testfun(*testlist)
15

*表示法专门用于解包函数调用列表。我没有看到它在任何其他环境中有效,但调用testfun(*[3,5])等同于调用testfun(3,5)