将一个列表复制到另一个列表中

时间:2017-06-01 10:36:14

标签: python python-3.x

有点令人困惑的是,我还没有列出一个带有列表腼腆的列表a [], 仍然在输出我得到,列出一个,同样,列出腼腆。我的意思是,当我使用coy = a [:]时,这是怎么回事。谢谢。

T=int(input())
for i in range(T):
    a=[]
    z=[]
    f=0
    count=0
    n,m=map(int,input().split())
    for i in range(n):
        a+=[list(map(int,input().split()))]
    coy=a[:]
    print(coy,'coy')#debug
    print(a,'a')#debug
    while(f==0):
        for i in range(n):
            for j in range(m):
                if i==0 and j==0:
                    coy[0][0]=max(a[i][j+1],a[i+1][j+1],a[i+1][j])
                elif i==0 and j==m-1:
                    coy[i][j]=max(a[i][j-1],a[i+1][j],a[i+1][j-1])
                elif i==n-1 and j==0:
                    coy[i][j]=max(a[i][j+1],a[i-1][j],a[i-1][j+1])
                elif i==n-1 and j==m-1:
                    coy[i][j]=max(a[i-1][j],a[i][j-1],a[i-1][j-1])
                elif j==0:
                    coy[i][j]=max(a[i][j+1],a[i-1][j],a[i+1][j],a[i-1][j+1],a[i+1][j+1],)
                elif j==m-1:
                    coy[i][j]=max(a[i][j-1],a[i-1][j],a[i-1][j-1],a[i+1][j],a[i+1][j-1])
                elif i==0:
                    coy[i][j]=max(a[i][j-1],a[i+1][j],a[i+1][j-1],a[i][j+1],a[i+1][j+1])
                elif i==n-1:
                    coy[i][j]=max(a[i][j-1],a[i-1][j-1],a[i-1][j],a[i-1][j+1],a[i][j+1])

                else:
                    coy[i][j]=max(a[i][j-1],a[i-1][j],a[i-1][j-1],a[i+1][j],a[i+1][j-1],a[i][j+1],a[i-1][j+1],a[i+1][j+1])
                    print('inside else','coy',coy,'a',a)#debug
        if(coy==a):
            print(coy,'coy')#debug
            print(a,'a')#debug

            count=0
            break

        for x in range(n):
            print('*')#debug
            z+=set(copy[x])
        print(z)
        if len(set(z))==1:
            f=1
        a=copy[:] 
        count+=1
        print('**********')#debug
    print(count)        

我已经使用了一些print语句来查看流,并且列表a的值在列表coy索引的分配期间发生了变化,理想情况下不应该这样。

1 个答案:

答案 0 :(得分:0)

使用id()函数检查“a”和“coy”列表的标识。两个列表可能相同,因为两个对象都引用相同的数据。 查看将一个列表复制到其他列表的所有其他可能性。 How to clone or copy a list?