这是我的密码。
print("enter string")
s=[int(i) for i in input().split()]
r=s.copy()
n=[' ',' ',' ']
d=[]
def rep(index):
temp=[]
for i in range(3):
if(s[index-i-1] not in temp):
temp.append(s[index-i-1])
if(len(temp)!=3):
temp.append(s[index-4])
return temp[-1]
for i in range(len(s)):
if(i<3):
n[i]=s[i]
print(s[i])
print(n)
d.append(n)
print(d)
elif(s[i] in n):
print(s[i])
print(n)
d.append(n)
print(d)
continue
else:
n[n.index(rep(i))]=s[i]
print(s[i])
print(n)
d.append(n)
print(d)
print(d)list n的值根据LRU变化,该列表被追加到list d中,但是追加函数在每次迭代中都更改list d。有人能告诉我怎么避免吗?
发布于 2020-03-17 06:30:11
当您将list n附加到list d时,现在有两种方法访问您的列表。通过变量(n)和list d (d[index])。两者都指向内存中的同一个list对象。因此,当您以一种方式更改列表n (n[index] = value)时,当您查看list d内部时,您也会看到更改。
为了解决这个问题,不要将list n附加到list d中,而是将list n的副本附加到list d中。
将所有d.append(n)替换为d.append(n.copy())。
https://stackoverflow.com/questions/60717169
复制相似问题