将n个参数传递给第三方函数

时间:2015-03-10 13:08:58

标签: python arguments

我正在使用名为iraf的软件,我必须将n个参数传递给函数,例如:

iraf.scombine(input=data[0]+'[1,2,3],'+data[1]+'[1,2,3],'+data[2]+'[1,2,3]',output='tmp')

其中data[0], data[1], data[2], data[3],...是文件名,因此filename[1,2,3]是值

是否有办法为n个参数执行此操作,例如

iraf.scombine(input=(data[I]+'[1,2,3]' for I in data),output='tmp')

3 个答案:

答案 0 :(得分:1)

试试这个:

iraf.scombine(input="[1,2,3],".join(data), output='tmp')

答案 1 :(得分:1)

此外,您可以在调用函数之前构建String。类似的东西:

my_input = "[1,2,3],".join(data)
iraf.scombine(input=my_input, output='tmp')

我认为它更有条理,更清晰。

使用连接字符串方法,在名为data的列表的每个元素之间放置“[1,2,3],”。

答案 2 :(得分:0)

假设我在当前工作目录中有以下文件

vivek@vivekUbuntu:~/Desktop/Study$ ls
CppProgs  JavaScript              NetworkProtcocols  PerlPrograms  Teach Yourself Database Programming With VisualC++.pdf
HTML&XML  networkingConcepts.txt  Perl               PythonProgs

在linux终端中打开python shell。

vivek@vivekUbuntu:~/Desktop/Study$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> # Trying to populate the data variable
>>> data = os.listdir('.')
>>> data
['JavaScript', 'PerlPrograms', 'HTML&XML', 'CppProgs', 'Perl', 'Teach Yourself Database Programming With VisualC++.pdf', 'NetworkProtcocols', 'networkingConcepts.txt', 'PythonProgs']
>>> # Now input=data[0] + [1,2,3], ... so on will be written as
>>> data[0] + '[1,2,3]'
'JavaScript[1,2,3]'
>>> # So we can use '[1,2,3],'.join like shown below
>>> '[1,2,3],'.join(data) 
'JavaScript[1,2,3],PerlPrograms[1,2,3],HTML&XML[1,2,3],CppProgs[1,2,3],Perl[1,2,3],Teach Yourself Database Programming With VisualC++.pdf[1,2,3],NetworkProtcocols[1,2,3],networkingConcepts.txt[1,2,3],PythonProgs'
>>> (data[i]+'[1,2,3]' for i in data)
<generator object <genexpr> at 0xb723dbe4>
>>>

如果您在输出中找到了这个,请告诉我。 因此,参数输入可以由字符串'[1,2,3],'.join(data)

填充