大家好,如果这是一个noob问题,我很抱歉,但我正在使用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
我期望的输出是xyzCoord不会受到影响,因为我创建了一个副本(toAdd),然后对其进行了修改。奇怪的是,这个循环会影响我的xyzCoord:
输出为:
^{pr2}$编辑:对于上下文,我的想法是,我希望最终用转换后的值创建一个单独的列表,然后最终创建一个插入列表,但这一部分阻碍了我。一、 e.我最理想的创作: [[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做一个更大的循环,这样我可以传播X,Y,Z上的一些坐标,任意次数。在
toAdd
不是重复项。以下内容使toAdd
引用与xyzCoord[i]
相同的子列表:当您更改
toAdd
的元素时,xyzCoord[i]
的相应元素也会更改。在代替上述内容,请写下:
^{2}$这将是一个(浅)副本。在
{cd1>最让人吃惊的是,{!它只是将一个新名称附加到现有对象上。在
如果你想复制一个列表,你可以使用列表的一个切片;切片操作符做一个拷贝。在
您还可以使用
copy
或deepcopy
从{a1}复制一个对象。在因为您使用的数组(列表列表)是一个对象,所以您只复制内部对象的引用,而不是复制值。在
相关问题 更多 >
编程相关推荐