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)
>>>
如果我有一个支持可变参数数量的函数,即使用 *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)
>>>