Python和科学计算认证群组  - 讨论区

标题:发现一个python的“bug”

2010年10月03日 星期日 02:19

今天调试发现一个内存管理的问题,简述代码如下:

allocated = [
         [0 for i in range(2)], # domains[0]
         [0 for i in range(2)], # domains[1]
         [0 for i in range(2)], # domains[2]
         ]

res_cache = [ # 这个里面会append很多数据
         [[],[]],
         [[],[]],
         [[],[]],
         ]

perc = allocated
 
grad = allocated
 
trend = allocated

然后我计算res_cache的均值,一阶,二阶分别给perc,grad和trend,

结果发现它们三个的值都等于trend的值...

不知道这是不是我自己机器的特例,有空去看看python的内存共享再来结贴。

最后,我把他们都分别初始化就ok了。

 

2010年10月03日 星期日 07:05

数组运算推荐使用NumPy。

然后对于你的问题,

allocated和perc, grad, trend其实都是同一个列表, 使用id(allocated), id(prec)等即可查询它们的内存地址。

如果修改你的程序的话可以这么做:

def allocate():

    return [[0]*2,[0]*2,[0]*2]

perc = allocate()

...

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号