这是我的代码。
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
中,但是append函数在每次迭代中都更改列表d。有人可以告诉我如何避免这种情况吗?
答案 0 :(得分:1)
将list n
附加到list d
时,现在有两种访问列表的方法。通过您的变量(n
)和list d
(d[index]
)。两者都指向内存中的同一列表对象。因此,当您以一种方式(n[index] = value
更改列表n时,当您浏览list d
时也会看到更改。
要解决此问题,请不要将list n
的副本附加到list d
。
将所有list n
替换为list d
。