首页 > 解决方案 > Python多维数组值赋值工作意外

问题描述

我正在实现两个向量之间的外积函数(叉积),我遇到了一些我不理解的东西。

数组值分配不像我预期的那样工作。在下面的代码中,每次我为 out[i][j] 分配一个值时,该值都被分配给所有的 out[x][j](不仅仅是 x==i 的位置)。

有人可以解释发生了什么吗?

def outer_prod(vec_a, vec_b): 
    out=[]
    item=[]
    for i in range(len(vec_b)):
        item.append(0)
    for i in range(len(vec_a)):
        out.append(item)
    print(str(out))    

    for i in range(len(vec_a)):
        for j in range(len(vec_b)):
            out[i][j] = vec_a[i]*vec_b[j]
            print(out)
    return out

outer_prod([1,2,3], [4,5,6])

输出:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[4, 0, 0], [4, 0, 0], [4, 0, 0]]
[[4, 5, 0], [4, 5, 0], [4, 5, 0]]
[[4, 5, 6], [4, 5, 6], [4, 5, 6]]
[[8, 5, 6], [8, 5, 6], [8, 5, 6]]
[[8, 10, 6], [8, 10, 6], [8, 10, 6]]
[[8, 10, 12], [8, 10, 12], [8, 10, 12]]
[[12, 10, 12], [12, 10, 12], [12, 10, 12]]
[[12, 15, 12], [12, 15, 12], [12, 15, 12]]
[[12, 15, 18], [12, 15, 18], [12, 15, 18]]

标签: pythonpython-3.xmultidimensional-array

解决方案


推荐阅读