这让我感到困惑,即使没有触摸第二个列表,两个列表也在并行更改。
我搜索并发现我应该使用列表推导来获取新的指针,因此我不会使用相同的列表,但是不,它仍然可以执行以下操作! 我找不到在线这种行为的原因。
display_order = current_order[:]
print(current_order)
print(display_order)
display_order[0][3] = "CHANGE"
print(current_order)
print(display_order)
输出:
[['ID', 'Product', '999', 'Section', 'Seat']]
[['ID', 'Product', '999', 'Section', 'Seat']]
[['ID', 'Product', '999', 'CHANGE', 'Seat']]
[['ID', 'Product', '999', 'CHANGE', 'Seat']]
答案 0 :(得分:0)
问题在于两个变量都指向内存中的同一内部列表。
display_order = current_order[:]
您会在内存中看到这种情况:
display order -----> [['ID', 'Product', '999', 'Section', 'Seat']]
^
|
current_order ---------
它们都指向同一列表。
使用列表的深层副本可以避免这种情况,该副本会将第一个列表的值复制到内存中的新位置。将该行替换为以下行:
display_order = copy.deepcopy(current_order)