在Python中,如何将列表转换为*args
?
我需要知道因为功能
scikits.timeseries.lib.reportlib.Report.__init__(*args)
希望将几个time_series对象传递为*args
,而我有一个时间序列对象列表。
答案 0 :(得分:162)
您可以在迭代前使用*
运算符在函数调用中展开它。例如:
timeseries_list = [timeseries1 timeseries2 ...]
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)
(注意*
之前的timeseries_list
)
如果语法*表达式出现在函数调用表达式中 必须评估为可迭代。处理此可迭代的元素 好像他们是额外的位置论点;如果有 位置参数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以获取更多信息。