关于for循环:如何在一组编号文件上应用函数,并使用python以相同的方式获取输出?

How can I apply a fucntion over a set of numbered files and get outputs numbered same way using python?

我正在分析一系列分子动力学轨迹,

1
2
3
4
traj1
traj2
traj3
...

我想将一个分析函数单独应用于所有这些函数,这样我就可以得到不同的输出,并对它们进行编号。

1
2
3
4
output1
output2
output3
...

或者那个或者

1
2
3
traj1_output
traj2_output
traj3_output

我试着写一个循环,但找不到真正的方法。

任何建议都将受到高度赞赏。

谢谢!


您可以为一个元素编写函数,然后使用map()内置函数。linc到documetation https://docs.python.org/2/library/functions.html映射


在我看来,您要做的是将输入映射到输出。虽然您可以使用编程创建的名称动态创建变量(请参见此答案),但使用dict可能更清楚:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def process(data):
    return"processed: {data}".format(data=data)

trajectories = {
   "traj1":"some data",
   "traj2":"some data",
   "traj3":"some data",
}

results = {}
for name in trajectories:
    output_name ="{name}_output".format(name=name)
    results[output_name] = process(trajectories[name])

# Print out all results (in semi-random order)
for name in results:
    print("{name}: {result}".format(name=name, result=results[name]))

# Print out a result from the dict
print(results["traj1_output"])

请注意,存根函数和值就在这里,这样您就可以随意使用这个概念,而不需要在实际程序中使用一些复杂的算法。