当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《调用函数时将列表转换为*args》经验,为你挑选了2个好方法。

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

我需要知道因为功能

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

想要传递几个time_series对象*args,而我有一个时间序列对象列表.



1> Bryan Oakley..:

您可以*在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教程中的一个标题为解包参数列表的部分也介绍了这一点,其中还介绍了如何使用**运算符对关键字参数的字典进行类似的操作.


忘了这个:http://docs.python.org/reference/expressions.html#calls

2> Ant..:

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有