大家好,我很抱歉,如果这是一个菜鸟问题,但我使用的是python,我有一个问题,我复制一个数组但是当我修改副本时,它会影响原始.我想在边界矩阵中添加一个线性偏移到一组坐标:
boundaries = [[5.818, 0.0, 0.0], [0.0, 5.818, 0.0], [0.0, 0.0, 5.818]]
xyzCoord = [[0.0, 0.0, 0.0], [2.909, 2.909, 0.0], ...
extraX=[]
for i in range(0,len(xyzCoord)):
toAdd=[]
toAdd=xyzCoord[i]
toAdd[0]=toAdd[0]+boundaries[0][0]
print xyzCoord
Run Code Online (Sandbox Code Playgroud)
我期望的输出是xyzCoord不应该受到影响因为我复制(toAdd)然后修改它.奇怪的是,这个循环确实影响了我的xyzCoord:
输出是:
[[5.818, 0.0, 0.0], [0.0, 5.818, 0.0], [0.0, 0.0, 5.818]]
[[0.0, 0.0, 0.0], [2.909, 2.909, 0.0], ...
[[5.818, 0.0, 0.0], [8.727, 2.909, 0.0], ...
Run Code Online (Sandbox Code Playgroud)
编辑:对于上下文,我的想法是,我想最终使用转置值创建一个单独的列表,然后最终创建一个插入列表,但这部分让我感到高兴.即我理想地想创建:[[0.0,0.0,0.0],[5.818,0.0,0.0],[2.909,0.0,0.0],[8.727,2.909,0.0] ...]然后创建一个更大的循环对于Y和Z.这样我可以在XY和Z中传播一些坐标并且任意次数.
这是关于Python最令人惊讶的事情之一 - =操作员永远不会复制任何东西!它只是为现有对象附加一个新名称.
如果要复制列表,可以使用列表的一部分; 切片操作符确实复制了.
toAdd=xyzCoord[i][:]
Run Code Online (Sandbox Code Playgroud)
您还可以使用copy或deepcopy从copy模块中复制对象.
| 归档时间: |
|
| 查看次数: |
2483 次 |
| 最近记录: |