Copying lists: editing copy without changing original
本问题已经有最佳答案,请猛点这里访问。
我正在制作一个程序,它需要和可编辑的临时数组,而不会影响原始数组。但是,每当我运行函数并测试它时,它会像这样编辑实际数组:
1 2 3 4 5 | x = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] y = copying(x) y[0][0] = 1 print(x) [[1, 0, 0], [0, 0, 0], [0, 0, 0]] |
功能如下:
1 2 3 4 5 6 | def copying(array): temp = [] for i in array: temp.append(i) return temp |
该函数用于简单列表,但数组项不起作用。是否有我应该使用的替代方案?(我尝试了list()和copy())
您需要使用来自
copy.deepcopy(x) Return a deep copy of x.
此函数正在复制所有内容,甚至子元素(以及子元素和…你明白我的想法)。您的简短示例已更正:
1 2 3 4 5 6 7 8 | >>> from copy import deepcopy >>> x = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> y = deepcopy(x) >>> y[0][0] = 1 >>> x [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> y [[1, 0, 0], [0, 0, 0], [0, 0, 0]] |