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

dte*_*ter 2 python arguments function args kwargs

如果我有一个支持变量参数号的函数,即使用*args,我如何从循环/列表理解中填充参数?假设函数需要多个列表作为参数,并且我有一个表/数据帧,并希望将每列用作输入参数,为什么这不起作用?

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

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

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

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

Bah*_*rom 6

传递时将列表解压缩:

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)
>>> 
Run Code Online (Sandbox Code Playgroud)

  • @dter那是语法 (2认同)