How to split list and pass them as separate parameter?

Question:

My problem is I have values in a list. And I want to separate these values and send them as a separate parameter.

My code is:

def egg():
    return "egg"

def egg2(arg1, arg2):
    print arg1
    print arg2

argList = ["egg1", "egg2"]
arg = ', '.join(argList)

egg2(arg.split())

This line of code (egg2(arg.split())) does not work, but I wanted to know if it is possible to call some built-in function that will separated values from list and thus later we can send them as two different parameters. Similar to egg2(argList[0], argList[1]), but to be done dynamically, so that I do no have to type explicitly list arguments.

Asked By: Rohita Khatiwada

||

Answers:

>>> argList = ["egg1", "egg2"]
>>> egg2(*argList)
egg1
egg2

You can use *args (arguments) and **kwargs (for keyword arguments) when calling a function.
Have a look at this blog on how to use it properly.

Answered By: Jacob

There is a special syntax for argument unpacking:

egg2(*argList)
Answered By: Sven Marnach

arg.split() does not split the list the way you want because the default separator does not match yours:

In [3]: arg
Out[3]: 'egg1, egg2'

In [4]: arg.split()
Out[4]: ['egg1,', 'egg2']

In [5]: arg.split(', ')
Out[5]: ['egg1', 'egg2']

From the docs (emphasis added):

If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace.

Answered By: matt b

There are maybe better ways, but you can do:

argList = ["egg1", "egg2"]
(a, b) = tuple(argList)
egg2(a, b)
Answered By: MByD
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.