用Python解压列表?

2024-04-16 04:50:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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


Tags: 项目函数列表thatmy错误情况function
3条回答

自Python 3.5以来,您可以无限量地解压缩lists

PEP 448 - Additional Unpacking Generalizations

所以这是可行的:

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

You can read all about it here.

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

function_that_needs_strings(*my_list)

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

请参阅call expression documentation

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

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

还有equivalent syntax用于指定函数签名中的catch all参数:

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

相关问题 更多 >