在python中将number导入变量名



首先,我对python编码有点陌生,所以这似乎是一个愚蠢的问题。

问题:我正在尝试创建一个脚本,允许我将数字导入(变量?操作符?)名称,以便从bash脚本运行我的python脚本。

理想情况下,我想做以下事情(我知道语法是错误的,但它是从我的第一次尝试和捕获我想要它做什么):

replica_number = 2#2仅用于测试。之后,将在许多不同的数据表上与bash脚本中导入的数字进行交换。

t_r+replica number = md.load(data_path+'potein_+replica_number+_centered.xtc', top = data_path+'potein_+replica_number+_first.gro')[1:]

我想这样做的是自动创建名为t_r2的变量,并导入名为protein_2_centric的文件。XTC和protein__first_gro。然而,当我这样做时,我得到:SyntaxError:不能分配给操作符

有没有人知道如何解决这个问题,或者我只需要为每个副本制作一个单独的脚本?

你需要的不是一个列表就是一个字典。

您可以将所有结果保存在列表中(不保留replica_number):

t_r_list = []
t_r_list.append(md.load(...)[1:]) #  Run this line for each t_r you want to load

或者如果您想保留replica_number,您可以使用字典:

t_r_dict = {}
t_r_dict[replica_number] = md.load(...)[1:]

你可能想读一篇关于这些数据结构以及如何使用它们的教程,它将极大地帮助你以后的python之旅,并且是在python中处理数据的基础。

当属性或变量的名称是动态的时,我们可以使用,例如,Python对格式化字符串使用的新方法(f "),然后使用setattr方法:

setattr方法是这样的,是内置库的一部分:

def setattr(x, y, v): # real signature unknown; restored from __doc__
""" Sets the named attribute on the given object to the specified value."""

在这里你可以对变量做什么

replica_number = 2
variable_name = f't_r{replica_number }'

,然后检查并设置属性:

if not hasattr(YOUR_OBJECT, variable_name ):
raise ValueError
setattr(YOUR_OBJECT, variable_name , THE_VALUE)

使用字典进行此类操作:

replica_number = md.load(...)[1:]
your_dict = {t_r : replica_number} 

并通过

访问
your_dict[t_r]

最新更新