Python 使用 *args 填充函数的输入参数

Python populating input arguments for a function with *args

如果我有一个支持可变参数数量的函数,即使用 *args,我如何从 loop/list 理解中填充参数?假设函数需要多个列表作为参数,而我有一个 table/dataframe 并且想将每一列用作输入参数,为什么这不起作用?

funName([df[iCol].values for iCol in df.columns])

假设我的数据框有 5 列,我需要像这样调用函数:

funName(col1, col2, col3, col4, col5)

但我不想为每一列手动创建变量,而是动态填充参数列表。谢谢

传入列表时将其解压:

funName(*[df[iCol].values for iCol in df.columns])

列表解包是必需的,因为如果你不这样做,fn 将得到一个参数,它是一个列表,比如 [1, 2, 3],而你想要一个参数序列 1, 2, 3.

例如:

>>> def fn(*args):
...     print args
...     
>>> fn([1, 2, 3])
([1, 2, 3],)
>>> fn(*[1, 2, 3])
(1, 2, 3)
>>>