Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 临时变量中的更改会影响从中输入的变量_Python 3.x - Fatal编程技术网

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[:]
这将生成具有相同元素的不同列表,而不是相同列表

可能的重复