首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python多维数组乘法行为

python多维数组乘法行为
EN

Stack Overflow用户
提问于 2017-02-24 18:05:12
回答 1查看 61关注 0票数 0

我写这段代码是为了对给定的图像进行均值过滤。在它中,我首先初始化一个二维数组。但是,当我尝试将一个值赋给特定的单元格时,它实际上将该值赋给了整个列。如下所示:

代码语言:javascript
复制
def boxBlur(image):    
    height = len(image)
    width = len(image[0])
    result = [[0]*(width-2)]*(height-2)
    for i in range(height-2):
        for j in range(width-2):                         
            mysum = image[i][j] + image[i][j+1] + image[i][j+2] + image[i+1][j] + image[i+1][j+1] + image[i+1][j+2] + image[i+2][j] + image[i+2][j+1] + image[i+2][j+2]            
            result[i][j] = mysum / 9
            print result        

boxBlur([[7,4,0,1], 
 [5,6,2,2], 
 [6,10,7,8], 
 [1,4,2,0]])

输出如下:

代码语言:javascript
复制
[[5, 0], [5, 0]]
[[5, 4], [5, 4]]
[[4, 4], [4, 4]]
[[4, 4], [4, 4]]

有人能确切地解释这种行为背后的原因吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-24 18:08:25

数组的“乘法”是将一个引用复制到要乘法的对象,即生成的数组的每个元素都指向相同的实际实例。因此,修改一个元素会修改所有元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42435778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档