调用函数时将列表转换为*args

and*_*s-h 116 python arguments list function-call

在Python中,如何将列表转换为*args

我需要知道因为功能

scikits.timeseries.lib.reportlib.Report.__init__(*args)
Run Code Online (Sandbox Code Playgroud)

想要传递几个time_series对象*args,而我有一个时间序列对象列表.

Bry*_*ley 177

您可以*在iterable之前使用运算符在函数调用中展开它.例如:

timeseries_list = [timeseries1 timeseries2 ...]
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)
Run Code Online (Sandbox Code Playgroud)

(注意*之前timeseries_list)

python文档:

如果语法*表达式出现在函数调用中,则表达式必须求值为iterable.来自此迭代的元素被视为它们是附加的位置参数; 如果存在位置参数x1,...,xN,并且表达式求值为序列y1,...,yM,则这相当于具有M + N个位置参数x1,...,xN,y1,...的调用. ..,是的.

python教程中的一个标题为解包参数列表的部分也介绍了这一点,其中还介绍了如何使用**运算符对关键字参数的字典进行类似的操作.

  • 忘了这个:http://docs.python.org/reference/expressions.html#calls (4认同)

Ant*_*Ant 13

是的,使用*arg将args传递给函数将使python解压缩arg中的值并将其传递给函数.

所以:

>>> def printer(*args):
 print args


>>> printer(2,3,4)
(2, 3, 4)
>>> printer(*range(2, 5))
(2, 3, 4)
>>> printer(range(2, 5))
([2, 3, 4],)
>>> 
Run Code Online (Sandbox Code Playgroud)