如何拆分列表并将它们作为单独的参数传递?

时间:2011-08-02 13:46:40

标签: python list

我的问题是我在列表中有值。我想分离这些值并将它们作为单独的参数发送。

我的代码是:

def egg():
    return "egg"

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

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

egg2(arg.split())

这行代码(egg2(arg.split()))不起作用,但我想知道是否可以调用一些将值与列表分开的内置函数,因此稍后我们可以将它们作为两个不同的参数发送。与egg2(argList[0], argList[1])类似,但要动态完成,这样我就不必显式列出参数。

4 个答案:

答案 0 :(得分:51)

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

调用函数时,可以使用* args(arguments)和** kwargs(用于关键字参数)。 请查看this blog如何正确使用它。

答案 1 :(得分:9)

argument unpacking有一种特殊的语法:

egg2(*argList)

答案 2 :(得分:1)

可能有更好的方法,但你可以这样做:

argList = ["egg1", "egg2"]
(a, b) = tuple(argList)
egg2(a, b)

答案 3 :(得分:0)

arg.split()不会按您希望的方式拆分列表,因为默认分隔符与您的列表不匹配:

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

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

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

来自the docs(强调补充):

  

如果未指定sep或None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果将不包含空字符串如果字符串具有前导或尾随空格,则为开头或结尾。