'How to expand a list to function arguments in Python [duplicate]
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() )
Solution 1:[1]
It exists, but it's hard to search for. I think most people call it the "splat" operator.
It's in the documentation as "Unpacking argument lists".
You'd use it like this for positional arguments:
values = [1, 2]
foo(*values)
There's also one for dictionaries to call with named arguments:
d = {'a': 1, 'b': 2}
def foo(a, b):
pass
foo(**d)
Solution 2:[2]
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)
Solution 3:[3]
Solution 4:[4]
That can be done with:
foo(*values)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Lee Meador |
| Solution 2 | |
| Solution 3 | Andrew Clark |
| Solution 4 | Ikke |
