Python数组引用问题:如何让游戏中的三个数组独立修改?
问题原因
在Python中,直接将列表赋值给多个变量(比如originlevel = matrix),本质是让这些变量指向同一个列表对象,并非创建新的独立副本。所以修改其中任何一个变量的元素,都会同步影响所有指向该对象的变量。
简便的独立复制方法
因为你提到matrix是一维数组(非矩阵),以下几种方法都能快速创建独立副本,修改其中一个不会影响另外两个:
- 切片复制(最常用的简便写法):
originlevel = matrix[:] - list()构造函数:
originlevel = list(matrix) - copy模块的浅拷贝:
先导入copy模块,再使用copy.copy()方法:import copy originlevel = copy.copy(matrix)
修改后的代码示例
def Player(matrix, width): originlevel = matrix[:] emptylevel = matrix[:] emptylevel[PlayerPositionFind(matrix)] = "#" level = matrix[:]
这些方法都能让三个变量各自指向独立的列表对象,后续修改任意一个都不会影响另外两个。
内容的提问来源于stack exchange,提问作者Plush Loler
相关产品推荐
相关产品推荐

