如何将列表的所有元素转移到一个要求* args的函数中?

时间:2013-05-11 17:53:40

标签: python parameters

我正在使用类似def foo(*args)的头部调用第三方函数,因此通常我可以这样使用foo(a,b,c)

但现在我有一个清单,说li = [a,b,c]。我不知道它在运行之前有多少元素。如何将列表的所有元素作为参数传递给函数foo

我已尝试foo(li)foo(tuple(li)),但它们无效。请帮忙。

谢谢。

2 个答案:

答案 0 :(得分:2)

在调用函数时使用**在函数调用期间将unpacking序列用于单独的位置参数:

foo(*li)

演示:

>>> def foo(*args): print (args)
>>> foo(*range(10))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

答案 1 :(得分:2)

尝试在li之前使用*传递foo(*li)

li = [1, 2, 3, 4, 5]
foo(*li)

例如:

>>> def f(*args):
...     print args
...
>>> li = [1,2,3]
>>> f(*li)
(1, 2, 3)