将列表转换为Python中的* args

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

我需要知道,因为function

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

想要几个time_series对象作为*parameter passing,而我有一个时间序列对象的列表。

任何帮助是极大的赞赏 :)

你可以在迭代器之前使用*运算符来在函数调用中扩展它。 例如:

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

(注意timeseries_list之前的*

从python文档 :

如果语法*expression式出现在函数调用中,则expression式必须计算为可迭代的。 来自这个迭代的元素被当作是额外的位置参数来对待; 如果存在位置参数x1,…,xN,并且expression式计算为序列y1,…,yM,则这相当于具有M + N个位置参数x1,…,xN,y1,…的调用。 ..,嗯。

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

*args只是意味着函数需要一些参数,通常是相同的types。

查看Python教程中的这个部分以获取更多信息。