有点令人困惑的是,我还没有列出一个带有列表腼腆的列表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索引的分配期间发生了变化,理想情况下不应该这样。
答案 0 :(得分:0)
使用id()
函数检查“a”和“coy”列表的标识。两个列表可能相同,因为两个对象都引用相同的数据。
查看将一个列表复制到其他列表的所有其他可能性。
How to clone or copy a list?