2017-06-01 4 views
-1

そのビットは混乱していますが、私はリストa []とリストcoyの割り当てを行っていません。 はまだ出力されています。リストも同様です。私は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インデックスの割り当て時に変更されます。

答えて

0

id()機能を使用して、両方のリスト "a"と "coy"の同一性を確認してください。両方のオブジェクトが同じデータを参照するため、両方のリストが同じである可能性があります。 リストを他のものにコピーする他のすべての可能性をチェックしてください。 How to clone or copy a list?

+0

リスト「A」と 『』内気両方が異なるIDを持っています。Pythonのリストのシャローコピーとディープコピーの答えで – dodo

+0

確認します。[一覧COPY1](https://stackoverflow.com/questions/8350750/python-copy-list-issue)、[リストコピー2](https://stackoverflow.com/questions/6993531/copy-list-in-python) – voidpro

関連する問題