python - 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]]
解决方案
推荐阅读
- java - ContextRefreshedEvent 在 Spring 集成测试中过早触发
- python - AttributeError:当我保存在图像中时,“NoneType”对象没有属性“get”
- windows - 如何将窗口过程关联到我现有的对话窗口
- apostrophe-cms - 使用 (JoinByOne , JoinByArray) 自动加入
- c - 在程序中得到错误的输出
- android - FirebaseMessagingService 类中不存在handleIntent 方法
- swift - 当用户正在寻找视频时,AVPlayer 应该暂停
- amazon-web-services - Sagemaker 和 EC2 哪个成本更低?
- javascript - Webpack Loader:可选依赖项的默认值
- edi - EDI 和 FHIR 有什么区别?