python 将列表传递给函数以用作多个参数[duplicate]

wswtfjt7  于 2022-11-28  发布在  Python
关注(0)|答案(3)|浏览(163)

此问题在此处已有答案

Expanding tuples into arguments(6个答案)
5个月前关闭。
在一个需要一个列表项的函数中,我如何传递一个Python列表项而不出错呢?

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!

当然,一定有一种方法可以扩展列表,并传递函数'red','blue','orange'。我认为这叫做“解包”。

jdgnovmf

jdgnovmf1#

function_that_needs_strings(*my_list) # works!

您可以在这里阅读所有相关信息:解包参数列表-Python教程

i2byvkas

i2byvkas2#

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

function_that_needs_strings(*my_list)

其中my_list可以是任何可迭代的; Python将在给定的对象上循环,并将每个元素用作函数的单独参数。
请参阅调用表达式文档。
还有一个等效的关键字参数,使用两颗星:

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

并且有equivalent syntax用于在函数签名中指定捕获所有参数:

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

liwlm1x93#

从Python 3.5开始,你可以解包无限数量的list
PEP 448 -其他拆包概括
因此,这将起作用:

a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)

相关问题