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

时间:2010-10-15 10:48:44

标签: python list arguments function-call

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

我需要知道因为功能

scikits.timeseries.lib.reportlib.Report.__init__(*args)

希望将几个time_series对象传递为*args,而我有一个时间序列对象列表。

3 个答案:

答案 0 :(得分:162)

您可以在迭代前使用*运算符在函数调用中展开它。例如:

timeseries_list = [timeseries1 timeseries2 ...]
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)

(注意*之前的timeseries_list

来自python documentation

  

如果语法*表达式出现在函数调用表达式中   必须评估为可迭代。处理此可迭代的元素   好像他们是额外的位置论点;如果有   位置参数x1,...,xN和表达式求值为a   序列y1,...,yM,这相当于具有M + N位置的调用   参数x1,...,xN,y1,...,yM。

这也在python教程的标题为Unpacking argument lists的部分中介绍,其中还介绍了如何使用**运算符对关键字参数的字典进行类似的操作。

答案 1 :(得分:14)

是的,使用* 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],)
>>> 

答案 2 :(得分:1)

*args只意味着该函数采用了许多参数,通常是相同的类型。

在Python教程中查看this section以获取更多信息。