在Python中,如何将列表转换为*args
?
我需要知道因为功能
scikits.timeseries.lib.reportlib.Report.__init__(*args)
想要传递几个time_series对象*args
,而我有一个时间序列对象列表.
您可以*
在iterable之前使用运算符在函数调用中展开它.例如:
timeseries_list = [timeseries1 timeseries2 ...] r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)
(注意*
之前timeseries_list
)
从python文档:
如果语法*表达式出现在函数调用中,则表达式必须求值为iterable.来自此迭代的元素被视为它们是附加的位置参数; 如果存在位置参数x1,...,xN,并且表达式求值为序列y1,...,yM,则这相当于具有M + N个位置参数x1,...,xN,y1,...的调用. ..,是的.
python教程中的一个标题为解包参数列表的部分也介绍了这一点,其中还介绍了如何使用**
运算符对关键字参数的字典进行类似的操作.
是的,使用*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],) >>>