2014-08-29 3 views
-1

Я начинаю чувствовать себя немного тупым, что не выяснить это ...Pythonic способ преобразования списка входы функции нескольких переменных

говорят, у меня есть функция два переменных:

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

теперь у меня есть список значений, скажем [2,3], который я хочу ввести как значения в функцию. Каков самый Pythonic способ сделать это? Я думал, что-то вроде этого:

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

... но это выглядит очень непитоновский, и я не хочу иметь дело со строками в любом случае! Есть ли один вкладыш (например,), который заставит меня чувствовать себя все осторожно и привлекательно внутри (как это часто случается с Python)? У меня есть ощущение, что это может быть что-то сумасшедшее ...

+6

'testfun (* [2, 3])'? –

+0

dupe? http://stackoverflow.com/q/12786102/748858 – mgilson

+1

uum да спасибо! Ничего себе, я не могу поверить, что не знал, что: P –

ответ

3

Обозначение * будет служить вам здесь.

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).

Смежные вопросы