方案:我正在尝试将字符串列表作为变量输入传递给函数。
问题:由于列表中的变量仅用于其中一个参数,因此出现错误must be str, not list
。
该函数将三个输入作为参数:
transformfile(path, name, id)
我有一个我想通过的名字列表:
list_names =['Name1', 'Name2', 'Name3']
我尝试直接传递它,但是遇到了上述错误...
transformfile(path, list_names, id)
目标:在这种情况下,我的目标是使该函数针对list_names中的每个名称多次运行。
问题:是否可以执行这种过程,或者我是否必须直接多次直接调用该函数?
答案 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