如何在Python中将列表扩展为函数参数[重复]

Posted

技术标签:

【中文标题】如何在Python中将列表扩展为函数参数[重复]【英文标题】:How to expand a list to function arguments in Python [duplicate] 【发布时间】:2011-12-06 10:52:43 【问题描述】:

是否有语法允许您将列表扩展为函数调用的参数?

例子:

# Trivial example function, not meant to do anything useful.
def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

# List of values that I want to pass into foo.
values = [1,2,3]

# I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )

【问题讨论】:

为什么不给函数一个元组? @lc2817 我正在使用无法更改的库函数,并且作为参数传入的数据已经在数组中。 我反对将其标记为重复的决定。链接到*args 的解释是正确的,但声称这个问题重复是在要求人们玩 Jeopardy。只有知道这个问题的答案(即“使用 *args”),才能知道要搜索声称是重复的问题。 【参考方案1】:

它存在,但很难搜索。我想大多数人都称它为“splat”运算符。

它在文档中为“Unpacking argument lists”。

您可以这样使用它:foo(*values)。还有一个用于字典:

d = 'a': 1, 'b': 2
def foo(a, b):
    pass
foo(**d)

【讨论】:

【参考方案2】:

您应该使用 * 运算符,例如 foo(*values) 阅读 Python 文档 unpackaging argument lists。

另外,请阅读:http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

def foo(x,y,z):
   return "%d, %d, %d" % (x,y,z)

values = [1,2,3]

# the solution.
foo(*values)

【讨论】:

【参考方案3】:

尝试以下方法:

foo(*values)

这可以在 Python 文档中找到 Unpacking Argument Lists。

【讨论】:

【参考方案4】:

这可以通过:

foo(*values)

【讨论】:

以上是关于如何在Python中将列表扩展为函数参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将元组扩展为可变参数模板函数的参数?

可变参数宏包装器,扩展为使用与参数数量相对应的字符格式化字符串

自定义bash函数不提供python多个参数[重复]

在 GCC 中将 0 参数传递给可变参数宏失败,但仅在 C++ 中?

Flutter 如何将小部件扩展为具有更多内容的更大小部件?

转换列表项以扩展为 Google Inbox 等详细信息