将一个值列表传递给函数,而不是多个参数?

5

假设有一个函数func(),它需要两个参数ab。在Python中,是否有一种技巧可以将包含这两个值的单个列表mylist传递给该函数?

def myfunc(a, b):
    return a+b

myfunc([1, 2])

如果您完全确定自己一直在调用相同的函数并知道它需要多少个参数,那么可以像这样做:

mylist = [1, 2]
a, b = mylist

myfunc(a, b)

但是如果您有需要提供给某些函数的列表,并且每个列表都有不同数量的参数呢?您可以为每个函数编写单独的代码行,将列表解包成变量并将它们传递到相应的函数中,但是如果Python内置了一些东西,可以传递单个列表而不是单个参数值(在事先确保列表具有相应数量的值的情况下),那么看起来会更好,最重要的是需要更少的代码行。

2个回答

9

您可以使用 * 将列表解包成参数,详见此处

myfunc(*mylist)

3
我知道Python一定会有类似的东西! - user975135
3
这也可以用字典实现,这对于关键字参数或调用有许多参数的函数很有用:mydict = {'a': 1, 'b': 2} myfunc(**mydict) - Casey Kuball

4
def myfunc(a, b):
    return a+b

mylist = [1, 2]
myfunc(*mylist)

在这里,mylist 可以是长度为2的列表(list)、元组(tuple)、字符串(string)等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接