Python中数组赋值为何联动修改?旋转脚本异常问题求助
问题根源:列表的引用赋值
在Python中,执行temp = array时,并没有创建新的列表对象,只是让temp和array指向内存中同一个列表实例。这意味着对其中一个变量的修改会直接反映到另一个变量上——因为它们本质上是同一个东西,这就是你观察到temp随array同步变化的原因。
解决方法:创建列表的独立副本
要切断这种联动,你需要生成原列表的独立副本,常用的三种方法:
- 切片语法:
temp = array[:] list()构造函数:temp = list(array)copy模块浅拷贝:import copy; temp = copy.copy(array)
针对你的代码修改
只需将temp = array替换为上述任意一种副本创建方式即可。同时修正原代码中循环范围的疏漏(原range(1, N-1)会漏掉最后一个元素的赋值),修改后的核心代码如下:
# 替换原有的temp = array,用切片创建独立副本 temp = array[:] array[0] = temp[N - 1] # 修正循环范围,确保覆盖所有元素 for i in range(1, N): array[i] = temp[i - 1] print(array)
内容的提问来源于stack exchange,提问作者Anders C
相关产品推荐
相关产品推荐

