Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的变量_Python - Fatal编程技术网

python中的变量

python中的变量,python,Python,我得到的变量如下: 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中使用具有原始名称的这

我得到的变量如下:

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中使用具有原始名称的这些变量

你可以用蟒蛇的方式来做:

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

range_function(1, 0) == [-5219, -5191, 11.7]

不确定您要问什么,但我将尝试一下-在“其他”程序的代码中执行以下操作:

  • 在首次使用
    范围*
    变量之前添加此代码:

    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])
    
  • 将所有
    范围10
    替换为
    ocd[2]。可能性。范围[1][0]
    ,例如在记事本++正则表达式中替换:

    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])
    

  • “从另一个程序中获取变量”的确切含义是什么?为什么不能使用原始名称?您得到的是
    ocd
    列表还是文本?ocd[2]。可能性。范围[1][1]=[-5180,-5057,56.5];是长文本文件中的一行。我喜欢使用[-5180,-5057,56.5],我希望在Python中使用“ocd[2].likelion.range[1][1]”作为变量名。如果我能做到这一点,我不必在使用Python之前重命名变量。由于变量的数量很多,重命名它们需要做很多工作。我将变量作为其他程序输出的长文本文件列表,我想使用Python中的变量。类名应为CamelCase。哦,我忘记了列表是可变的,并通过句柄传递,我修复了代码:)非常感谢!这两个版本都有效,但仅适用于ocd[2],下一个数据是ocd[3],等等(例如:ocd[1121].likelion.range[1][1]=[-5180,-5057,56.5];)因此我得到了“index out-range”@perperpersson。如果你有足够的内存来包含所有数据,那么你可以使用
    ocd=[MyDataType(10,10)表示范围内的i(9999)]
    (或不需要)将所有数据塞进内存,我建议将上一个程序的输出解析为文本输入-您需要访问所有
    ocd
    ,一次只访问一个
    ocd
    还是一个
    range
    ?我使用了999,效果很好!我认为我没有超过999。我对这个解决方案很满意。否则,我实际上只需要var我使用Python绘制其他程序生成的这些数据的图形。目前我只想让它工作。我保证稍后会尝试了解它是如何工作的。:-)谢谢您的帮助!