我偶然发现了一些暂时看起来很奇怪的东西。也许我一直在关注它太长时间以及太近,所以我依靠你的新眼睛,当然还有专业知识。
我有一个我想要更新的列表,即 ply_info 。更新包括从列表中获取元素(由 sign_reversal_index 指向的元素),复制它并调整原始和复制cat条目的值。最后一点是奇怪的,发生在最后两行代码中。
ply_info = [[0.3], [0.13], [0.13], [0.3], [0.13], [0.13], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3]]
t_ply = [0.3, 0.13, 0.13, 0.3, 0.13, 0.13, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]
height_list = [0]
for i in range(len(t_ply)):
height_list.append(height_list[i] + t_ply[i])
mid_plane_z = sum(t_ply) / 2
if mid_plane_z not in height_list:
print("...No ply boundary lies on mid plane.\n ...Splitting the one that crosses it.\n")
height_list.append(mid_plane_z)
height_list = sorted(height_list)
sign_reversal_index = height_list.index(mid_plane_z)
ply_to_duplicate = ply_info[sign_reversal_index-1]
ply_info.insert(sign_reversal_index-1, ply_to_duplicate)
ply_info[sign_reversal_index-1][0] = height_list[sign_reversal_index] - height_list[sign_reversal_index-1]
ply_info[sign_reversal_index][0] = height_list[sign_reversal_index+1] - height_list[sign_reversal_index]
我调试了这个东西,看起来这两个条目以某种方式链接并更新了一个,也更新了另一个。两个值都会更新两次,一次在第二行到最后一次,一次在最后一行代码中。 任何人都可以解释为什么会发生这样的事情以及它与副本的创建有何关系?围绕这个会怎么样?
正确的输出是:
[[0.3], [0.13], [0.13], [0.3], [0.13], [0.13], [0.3], [0.3], [0.3], [0.19], [0.11], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3], [0.3]]
注意......,[0.19],[0.11],......
相反,我得到......,[0.11],[0.11],......
非常感谢!