访问嵌套列表中的项:创建项之间的依赖关系,节省内存

时间:2013-06-26 10:54:50

标签: python

我需要跟踪一些像这样的过程

time0 = [  [0]  ]  
time1 = [  [ time0 ] , [1]  ]  
time2 = [  [ time1 ] , [2]  ]  
time3 = [  [ time2 ] , [3]  ]  
...
time5 = [  [ time4 ] , [5]  ]  

我喜欢这样,因为:
- 我需要time5对象中的内部对象依赖,因此如果我修改time0,则所有time1time5都会看到更改;
- 我创建了一百万个time5个对象,我的猜测是前一个过程很容易记忆;

现在,我很难访问time5的内部元素。 我会硬编码

time5[0][0][0][0][0][0] = 0   
time5[0][0][0][0][1][0] = 1  
time5[0][0][0][1][0] = 2  
time5[0][0][1][0] = 3
time5[0][1][0] = 4
time5[1][0] = 5

但是我需要一个函数来为任意[0][0][1][0]个对象生成索引timeX
我不知道该怎么做。

我也对任何设计建议持开放态度 我怀疑我的想法不是最好的。

1 个答案:

答案 0 :(得分:2)

首先,这是您正在寻找的解决方案(我猜):

def access(time_object, max_lvl, lvl):
    tmp = time_object
    while(lvl < max_lvl):
        tmp = time_object[0]
    return tmp

说实话,我不明白你为什么不简单地将每个元素存储在一个数组中。您不需要采用复杂方法的原因是依赖关系似乎是顺序的:timeN = [[timeN-1],[N]]

假设您将每次对象放入列表[time1,time2,....,timeN]中,您可以轻松看到

timeN[0][0][0][0][1][0] = list[N-4][0]