10

Given a Python tuple t = v1, v2, v3 is there a utility to unpack these so that given:

def foo(v1,v2,v3): pass

Instead of this:

foo(t[0],t[1],t[2])

You can do this:

foo(unpack(t))

I'd like to know of any such utility available for tuples and/or lists.

Sincere thanks.

4

3 回答 3

19

是的。您可以使用拆包运算符 ( '*')

foo(*t)

请注意,如果 t 是 a listtuple,甚至是生成器,则此方法有效


有一种类似的方法可以使用**映射对象(通常是字典)上的运算符将参数传递给带有关键字的函数:

def foo(key=None,foo=None):
    pass #...

foo(**{key:1,foo:2})
于 2012-09-18T10:49:05.193 回答
2

解压参数列表:

foo(*(v1, v2, v3))
于 2012-09-18T10:49:11.403 回答
1

使用*args参数传递:

foo(*t)

演示:

>>> def foo(v1, v2, v3):
...     print(v1, v2, v3)
...
>>> t = 1, 2, 3
>>> foo(*t)
1 2 3 
于 2012-09-18T10:48:56.987 回答