将列表作为参数传递给函数python

时间:2019-01-06 19:28:06

标签: python

方案:我正在尝试将字符串列表作为变量输入传递给函数。

问题:由于列表中的变量仅用于其中一个参数,因此出现错误must be str, not list

该函数将三个输入作为参数:

transformfile(path, name, id)

我有一个我想通过的名字列表:

list_names =['Name1', 'Name2', 'Name3']

我尝试直接传递它,但是遇到了上述错误...

transformfile(path, list_names, id)

目标:在这种情况下,我的目标是使该函数针对list_names中的每个名称多次运行。

问题:是否可以执行这种过程,或者我是否必须直接多次直接调用该函数?

2 个答案:

答案 0 :(得分:2)

该函数不能接收多个名称,它只能处理单个名称,并且无法通过调用它来改变名称。

幸运的是,这正是for循环的用途:

for name in list_names:
    transformfile(path, name, id)

这非常好,正常,等等。即使该函数可以接收列表,它内部也可能有一个for循环。

答案 1 :(得分:1)

如果transformFile返回以下内容,您还可以使用列表理解

result = [transformfile(path, n, id) for n in list_names]

甚至带有或不带有map的{​​{1}}内置函数:

functools.partial

注意:result = map(lambda n: transformFile(path, n, id), list_names) from functools import partial result = map(partial(path=path, id=id), list_names) 返回一个 iterable ,因此,如果要获取每个调用的结果,则需要创建一个列表:map