在Python中解压一个列表?

我认为“解压缩”可能是错误的词汇 – 道歉,因为我确信这是一个重复的问题。

我的问题很简单:在一个需要列表项的函数中,如何传递一个Python列表项而不会出现错误?

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

当然,必须有一种方法来扩大名单,并通过蹄上的'red','blue','orange'function?

 function_that_needs_strings(*my_list) # works! 

你可以在这里读到所有和它有关的。

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

 function_that_needs_strings(*my_list) 

my_list可以是任何可迭代的; Python将遍历给定的对象,并使用每个元素作为函数的单独参数。

请参阅调用expression式文档 。

有一个关键字参数相当于,使用两颗星:

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

并且在函数签名中有指定catch-all参数的等价语法 :

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

由于Python 3.5可以解包无限量的list

PEP 448 – 附加拆箱概述

所以这将工作:

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