用Python解压缩列表?

Unpack a list in Python?

我认为"解包"可能是错误的词汇-抱歉,因为我确信这是一个重复的问题。

我的问题很简单:在一个需要项目列表的函数中,如何在不出错的情况下传递一个python列表项目?

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

当然,必须有一种方法来扩展列表,并在hoof上传递函数'red','blue','orange'


1
function_that_needs_strings(*my_list) # works!

你可以在这里读到所有关于它的信息。


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

1
function_that_needs_strings(*my_list)

其中my_list可以是任何一个iterable;python将在给定的对象上循环,并使用每个元素作为函数的单独参数。

请参阅调用表达式文档。

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

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

在函数签名中指定catch all参数的语法是等效的:

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


由于python 3.5,您可以无限量地解包lists。

PEP 448-其他解包概括

所以这是可行的:

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