0

我得到这样的变量:

ocd[2].likelihood.range[1][0]=[-5219, -5191, 11.7];
ocd[2].likelihood.range[1][1]=[-5180, -5057, 56.5];

从其他程序。我重新格式化为:

range10=[-5219, -5191, 11.7];
range11=[-5180, -5057, 56.5];

为了在 Python 中使用它们,但这是很多工作,所以我的问题是,是否有可能以某种方式在 Python 中使用具有原始名称的这些变量?

4

2 回答 2

2

不知道你在问什么,但我会试一试 - 在“其他”程序的代码中执行以下操作:

  1. range*在第一次使用变量之前添加此代码:

    class Likelihood():
        def __init__(self, x, y):
            self.range = [{} for i in range(x)] # without default values
            # if you need default values, use this code or numpy.zeros(shape=(x,y))
            #self.range = [[0 for j in range(y)] for i in range(x)]
    
    class MyDataType():
        def __init__(self, dimension_1, dimension_2):
            self.likelihood = Likelihood(dimension_1, dimension_2)
    
    ocd = [0, 1, MyDataType(100, 100)]
    
    # copy-paste your code here:
    ocd[2].likelihood.range[1][0]=[-5219, -5191, 11.7];
    ocd[2].likelihood.range[1][1]=[-5180, -5057, 56.5];
    
    print(ocd[2].likelihood.range[1][0])
    
  2. 全部替换range10ocd[2].likelihood.range[1][0],例如在 Notepad++ Regex 中替换:

    Find what:    range(\d)(\d)
    Replace with: ocd[2].likelihood.range[\1][\2]
    
    i.e. from code: print(range10)
    to code:        print(ocd[2].likelihood.range[1][0])
    
于 2012-07-01T17:49:57.183 回答
0

你可以用pythonic的方式来做:

def range_function(row, column):
    return ocd[2].likelihood.range[row][column]

range_function(1, 0) == [-5219, -5191, 11.7]
于 2012-07-01T17:34:01.403 回答