在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)