我正在使用名为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')
答案 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)