在 Python 中,如何将列表转换为*args
?
我需要知道,因为函数
scikits.timeseries.lib.reportlib.Report.__init__(*args)
想要几个 time_series 对象作为 传递*args
,而我有一个 timeseries 对象列表。
在 Python 中,如何将列表转换为*args
?
我需要知道,因为函数
scikits.timeseries.lib.reportlib.Report.__init__(*args)
想要几个 time_series 对象作为 传递*args
,而我有一个 timeseries 对象列表。
您可以*
在可迭代对象之前使用运算符在函数调用中扩展它。例如:
timeseries_list = [timeseries1 timeseries2 ...]
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)
(注意*
前面timeseries_list
)
从python文档:
如果语法 *expression 出现在函数调用中,则表达式必须计算为可迭代。来自这个可迭代的元素被视为附加的位置参数;如果有位置参数 x1, ..., xN,并且表达式的计算结果为序列 y1, ..., yM,则这等效于使用 M+N 个位置参数 x1, ..., xN, y1, 的调用。 ..,嗯。
这也包含在 python 教程中,在标题为Unpacking argument lists的部分中,它还展示了如何使用运算符对关键字参数的字典执行类似的**
操作。
是的,使用 *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
只是意味着该函数需要许多参数,通常是相同类型的。
查看Python 教程中的此部分以获取更多信息。