如何在Python中解压缩列表或元组?

Mar*_*son 3 python tuples list

是否可以解压缩列表或元组,使得值可以用作函数参数?即,我怎样才能使第二条线工作?

f(1,2,3)
f(???([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

我现在正在手工做这件事,比如:

tmp1, tmp2, tmp3 = [1,2,3]
f(tmp1,tmp2,tmp3)
Run Code Online (Sandbox Code Playgroud)

context:我没有能力修改f(),但这是代码生成器的一部分,所以时髦的解决方案不是问题.

Mar*_*ers 11

是的,您可以使用*args(splat)语法:

f(*[1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

请参阅调用表达式文档.

还有一个关键字参数等效,使用两颗星:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
Run Code Online (Sandbox Code Playgroud)

并且在函数签名中指定catch-all参数的语法相同:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments
Run Code Online (Sandbox Code Playgroud)