[python] How to expand a list to function arguments in Python

Is there syntax that allows you to expand a list into the arguments of a function call?

Example:

# Trivial example function, not meant to do anything useful.
def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

# List of values that I want to pass into foo.
values = [1,2,3]

# I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )

This question is related to python arguments

The answer is


You should use the * operator, like foo(*values) Read the Python doc unpackaging argument lists.

Also, do read this: http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

def foo(x,y,z):
   return "%d, %d, %d" % (x,y,z)

values = [1,2,3]

# the solution.
foo(*values)

That can be done with:

foo(*values)

Try the following:

foo(*values)

This can be found in the Python docs as Unpacking Argument Lists.