我正在实现两个向量(叉积)之间的外部乘积函数,遇到了一些我不理解的事情。
数组值分配不符合我的预期。 在下面的代码中,每当我向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]]