如何避免在连续串联期间内存引用python中的列表?

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

这是deepcopy派上用场的时候了:

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