How to avoid memory referencing to lists in python during continuous concatenation?
本问题已经有最佳答案,请猛点这里访问。
我的要求是,我想要一个最终的列表作为输出,它应该
在与其他列表连接的过程中参与循环(我得到了一些其他计算的输出),但是使用下面的
实现它由于内存引用而不工作,我如何才能避免这种情况。在Python中
请原谅我的语法
1 2 3 4 5 6 7 | test_list=[[0,1],[2,3]] result_list=[] for i in range(3): result_list=list(result_list)+list(test_list) test_list.pop() //this below line is affecting the result_list also,how to avoid this test_list[0][1]+=1 |
这是
1 2 3 4 5 6 7 | from copy import deepcopy test_list=[[0,1],[2,3]] result_list=[] for i in range(3): result_list+=deepcopy(test_list) test_list.pop() test_list[0][1]+=1 |
但正如@rafaelc所说,这是一个错误:
1 2 3 4 5 6 7 | from copy import deepcopy test_list=[[0,1],[2,3]] result_list=[] for i in range(1): result_list+=deepcopy(test_list) test_list.pop() test_list[0][1]+=1 |
@拉斐尔给出了另一个好主意:
1 2 3 4 5 6 | test_list=[[0,1],[2,3]] result_list=[] for i in range(1): result_list=(result_list + test_list ).copy() test_list.pop() test_list[0][1]+=1 |