In Python, how do I convert a list to
I need to know because the function
wants several time_series objects passed as
*args, whereas I have a list of timeseries objects.
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)
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
*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.
yes, using *arg passing args to a function will make python unpack the values in arg and pass it to the function.
>>> 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],) >>>