Python变量不起作用

时间:2015-12-12 19:07:00

标签: python

在python上创建一个解决Rubik多维数据集的程序时,我编写了一些代码来翻转魔方的正面:

c_top = top
c_front = front
c_left = left
c_right = right
c_back = back
c_bottom = bottom
for x in range(6,9):
    right[x] = c_bottom[x]
    top[x] = c_right[x]
    left[x] = c_top[x]
    bottom[x] = c_left[x]    

出于某种原因,它做了一些奇怪的事情,改变了c_bottom和其他c_事情,即使我只运行了代码所在的函数。有谁知道为什么?

1 个答案:

答案 0 :(得分:1)

因为c_bottombottom都是引用同一对象的变量。这意味着c_bottom[x]bottom[x]x的{​​{1}}相同。

因此,当您执行range(0, len(bottom))时,bottom[x] = c_left[x]也会被修改。

简化示例:

c_bottom[x]

编辑:要解决此问题,您可以:

a)使a = ['Hello', 0, 0] b = a print(a[0]) # <<< Hello b[0] = 'Goodbye' print(a[0]) # <<< Goodbye 成为副本的副本。例如,如果他们列出了,那么你可以

c_side

b)但是,如果您只希望那些c_bottom = list(bottom) 变量执行该循环,则可以避免使用以下内容进行复制:

c_side