59

What is a good, brief way to extract items from a list and pass them as parameters to a function call, such as in the example below?

Example:

def add(a,b,c,d,e):
    print(a,b,c,d,e)

x=(1,2,3,4,5)

add(magic_function(x))
Zero Piraeus
  • 52,181
  • 26
  • 146
  • 158
falek.marcin
  • 8,408
  • 8
  • 27
  • 33

3 Answers3

91

You can unpack a tuple or a list into positional arguments using a star.

def add(a, b, c):
    print(a, b, c)

x = (1, 2, 3)
add(*x)

Similarly, you can use double star to unpack a dict into keyword arguments.

x = { 'a': 3, 'b': 1, 'c': 2 }
add(**x) 
Cat Plus Plus
  • 119,938
  • 26
  • 191
  • 218
15

I think you mean the * unpacking operator:

>>> l = [1,2,3,4,5]
>>> def add(a,b,c,d,e):
...    print(a,b,c,d,e)
...
>>> add(*l)
1 2 3 4 5
Tim Pietzcker
  • 313,408
  • 56
  • 485
  • 544
5

Use the * operator. So add(*x) would do what you want.

See this other SO question for more information.

Community
  • 1
  • 1
arunkumar
  • 30,367
  • 4
  • 31
  • 47