【发布时间】:2023-03-09 08:10:02
【问题描述】:
在 Python 中,如何将列表转换为 *args?
我需要知道因为函数
scikits.timeseries.lib.reportlib.Report.__init__(*args)
想要几个 time_series 对象作为 *args 传递,而我有一个 timeseries 对象列表。
【问题讨论】:
标签: python list arguments function-call
在 Python 中,如何将列表转换为 *args?
我需要知道因为函数
scikits.timeseries.lib.reportlib.Report.__init__(*args)
想要几个 time_series 对象作为 *args 传递,而我有一个 timeseries 对象列表。
【问题讨论】:
标签: python list arguments function-call
您可以在可迭代对象之前使用* 运算符在函数调用中扩展它。例如:
timeseries_list = [timeseries1 timeseries2 ...]
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)
(注意* 之前的timeseries_list)
如果函数调用中出现语法 *expression,则表达式 必须评估为可迭代。来自这个可迭代的元素被处理 好像它们是额外的位置参数;如果有 位置参数 x1, ..., xN 和表达式的计算结果为 序列 y1, ..., yM,这相当于一个 M+N 位置的调用 参数 x1, ..., xN, y1, ..., yM。
这也包含在 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 教程中的 this section 了解更多信息。
【讨论】: