Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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打印变量不匹配_Python - Fatal编程技术网

Python打印变量不匹配

Python打印变量不匹配,python,Python,这很奇怪,这是我的一段代码: def vert(vert): c=[] #print b for i in range(3): c.append(list(vert[i])) e=d=c s=[] print c by={0: (1,),1: (0,2),2: (1,)} boolean=False for i in

这很奇怪,这是我的一段代码:

 def vert(vert):

        c=[]

        #print b
        for i in range(3):
                c.append(list(vert[i]))
        e=d=c
        s=[]
        print c
        by={0: (1,),1: (0,2),2: (1,)}
        boolean=False
        for i in range(3):
            for j in range(3):
                if c[i][j]==0:
                    boolean=True
                    print i,j
                    for k in by[j]:
                        d[i][j],d[i][k]=d[i][k],d[i][j]
                        print d
                        s+=d
                        d[i][j],d[i][k]=d[i][k],d[i][j]
                    for l in by[i]:
                        e[i][j],e[l][j]=e[l][j],e[i][j]
                        print e
                        s+=e
                        e[i][j],e[l][j]=e[l][j],e[i][j]
                    break;
            if boolean :
                print s
                break;


vert(vertices[0])
输出为:

[[8, 1, 0], [5, 2, 6], [7, 3, 4]]
0 2
[[8, 0, 1], [5, 2, 6], [7, 3, 4]]                                     #d
[[8, 1, 6], [5, 2, 0], [7, 3, 4]]                                     #e 
[[8, 1, 0], [5, 2, 6], [7, 3, 4], [8, 1, 0], [5, 2, 6], [7, 3, 4]]    #s
这是我认为不应该发生的,我把e和d加在s上,它们以一种我不希望的不同形式加在一起,有人能看到发生了什么吗?
我想要的是e和d的打印形式。但是我看不出如何以正确的形式将它们添加到s中。

如果您为Python obejct指定一个新名称,它不会被复制,而是被链接。 所以在
e=d=c
之后,它们都指向同一个列表。如果你改变了一个,你就改变了一切。 为了防止这种情况,请将它们单独初始化

e = []
d = []
c = []

e=d=c
不会创建副本,它会将相同的列表对象分配给所有三个名称。因为您有
e=d=c
它们都是相同的对象。改变一个就是改变另一个……或者更确切地说,
c,d,e=[],[],[]