Python 3.x 临时变量中的更改会影响从中输入的变量
我正在设计一个智囊团游戏,它基本上比较两个列表并标记相似之处。当在正确的位置找到一种颜色时,将添加一个标记正确位置的标志,并标记参考列表上的项目。引用列表正在从另一个函数馈送数组。问题出在标记处,因为对引用列表所做的任何更改也会更改原始数组,我不希望发生这种情况Python 3.x 临时变量中的更改会影响从中输入的变量,python-3.x,Python 3.x,我正在设计一个智囊团游戏,它基本上比较两个列表并标记相似之处。当在正确的位置找到一种颜色时,将添加一个标记正确位置的标志,并标记参考列表上的项目。引用列表正在从另一个函数馈送数组。问题出在标记处,因为对引用列表所做的任何更改也会更改原始数组,我不希望发生这种情况 tempCode = mCode #mCode is the array combination randomly generated from another function for i in range (len(uCode
tempCode = mCode #mCode is the array combination randomly generated from another function
for i in range (len(uCode)): #user input array
for j in range (len(tempCode)): #temp array
if uCode[i] == tempCode[j]: # compare individual chars
if i == j: #compare position
flagMark = "*"
tempCode.insert(j+1, "x") #problem starts here
tempCode.remove(tempCode[j])
fCode.append(flagMark)
当达到插入时,tempCode和mCode都会更改,这是不需要的
如果用户输入相同颜色的组合,从而检查颜色(颜色仅为字母)和位置,然后用“x”标记它们,则代码的编写方式为
就目前情况而言,当它到达
tempCode.insert(j+1, "x")
阵列将更改为
mCode = ["B","R","x","G","Y"]
tempCode = ["B","R","x","G","Y"]
当我只想
mCode = ["B","R","G","Y"]
tempCode = ["B","R","x","G","Y"]
另请参见,这是对同一问题的不同表述
本质上,当您执行tempCode=mCode
时,您并不是在复制mCode
,而是在对它进行另一次引用。此后对tempCode
所做的任何操作都会影响原始对象,因此在任何给定时间,条件tempCode==mCode
都将为真(因为它们是相同的对象)
您可能想复制mCode
,这可以通过以下任一方式完成:
tempCode = mCode.copy()
tempCode = mCode[:]
这将生成具有相同元素的不同列表,而不是相同列表可能的重复