将 n 个参数传递给第三方函数
Pass n arguments to a third party function
我正在使用一个名为 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')
试试这个:
iraf.scombine(input="[1,2,3],".join(data), output='tmp')
此外,您可以在调用函数之前构建字符串。类似于:
my_input = "[1,2,3],".join(data)
iraf.scombine(input=my_input, output='tmp')
我认为它更有条理和清晰。
使用连接字符串方法,将“[1,2,3],”放在名为数据的列表的每个元素之间。
假设我在当前工作目录中有以下文件
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)
填充
我正在使用一个名为 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')
试试这个:
iraf.scombine(input="[1,2,3],".join(data), output='tmp')
此外,您可以在调用函数之前构建字符串。类似于:
my_input = "[1,2,3],".join(data)
iraf.scombine(input=my_input, output='tmp')
我认为它更有条理和清晰。
使用连接字符串方法,将“[1,2,3],”放在名为数据的列表的每个元素之间。
假设我在当前工作目录中有以下文件
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)