调用函数时将列表转换为 *args

发布于 2024-09-27 18:10:42 字数 223 浏览 4 评论 0 原文

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

我需要知道,因为该函数

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

需要多个 time_series 对象作为 *args 传递,而我有一个 timeseries 对象列表。

In Python, how do I convert a list to *args?

I need to know because the function

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

wants several time_series objects passed as *args, whereas I have a list of timeseries objects.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

忆依然 2024-10-04 18:10:42

您可以在可迭代对象之前使用 * 运算符,以在函数调用中扩展它。例如:(

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

注意 timeseries_list 之前的 *

来自 Python 文档

如果函数调用中出现*表达式语法,则表达式
必须评估为可迭代的。来自此迭代的元素被处理
就好像它们是额外的位置参数;如果有
位置参数 x1、...、xN 和表达式的计算结果为
序列 y1, ..., yM,这相当于 M+N 位置调用
参数 x1, ..., xN, y1, ..., yM。

python 教程中标题为 解包参数的部分也对此进行了介绍列表,其中还展示了如何使用 ** 运算符对关键字参数的字典执行类似的操作。

You can use the * operator before an iterable to expand it within the function call. For example:

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

(notice the * before timeseries_list)

From the python documentation:

If the syntax *expression appears in the function call, expression
must evaluate to an iterable. Elements from this iterable are treated
as if they were additional positional arguments; if there are
positional arguments x1, ..., xN, and expression evaluates to a
sequence y1, ..., yM, this is equivalent to a call with M+N positional
arguments x1, ..., xN, y1, ..., yM.

This is also covered in the python tutorial, in a section titled Unpacking argument lists, where it also shows how to do a similar thing with dictionaries for keyword arguments with the ** operator.

橘虞初梦 2024-10-04 18:10:42

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

yes, using *arg passing args to a function will make python unpack the values in arg and pass it to the function.

so:

>>> 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],)
>>> 
拍不死你 2024-10-04 18:10:42

*args 只是意味着该函数接受多个参数,通常类型相同。

请查看 Python 教程中的本节了解更多信息。

*args just means that the function takes a number of arguments, generally of the same type.

Check out this section in the Python tutorial for more info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文