【问题标题】:How can I unpack a list or tuple in place in Python? [duplicate]如何在 Python 中解压列表或元组? [复制]
【发布时间】:2014-01-05 17:08:29
【问题描述】:

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

f(1,2,3)
f(???([1,2,3]))

我目前正在手动执行此操作,例如:

tmp1, tmp2, tmp3 = [1,2,3]
f(tmp1,tmp2,tmp3)

上下文:我无法修改 f(),但这是代码生成器的一部分,因此时髦的解决方案不是问题。

【问题讨论】:

  • @NullUserException:那是函数签名。语法看起来一样,但功能不同。
  • @NullUserException:这并不是说这个问题不是骗人的,只是不是你提出的问题。
  • @Martijn 我很确定以前有人问过这个问题。我在手机上,所以很难查到
  • 我有一堆骗子......但很难真正选择哪一个......stackoverflow.com/q/14565032/748858,stackoverflow.com/q/11973028/748858,等等。
  • @mgilson:是时候坚持一个人,把其他一切都当成骗子了?

标签: python list tuples


【解决方案1】:

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

f(*[1, 2, 3])

请参阅call expressions documentation。

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

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)

在函数签名中指定包罗万象的参数有等效的语法:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多