首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么append()函数会在每次迭代中更改变量的值?

为什么append()函数会在每次迭代中更改变量的值?
EN

Stack Overflow用户
提问于 2020-03-17 06:23:38
回答 1查看 580关注 0票数 0

这是我的密码。

代码语言:javascript
复制
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。有人能告诉我怎么避免吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60717169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档