gpt4 book ai didi

带有列表和追加的 Python 奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:38 24 4
gpt4 key购买 nike

下面的代码是我遇到的问题,正在寻找解释。代码的行为与我预期的不同。代码下方将是我的预期输出和实际输出。最后要注意的是,我知道这段代码可能很“奇怪”,至少可以说使用 range(1) 有点奇怪。这样做的原因是程序中的这个确切事件(范围是变量但在这些值处)导致了问题..所以我制作了这个简单的代码来复制它。

userList = []

class User():
listA = []
listB = []

def setup(self):
for i in range(1):
self.listA.append('a')
self.listB.append('b')

for i in range(5):
user = User()
userList.append(user)

for i in range(len(userList)):
userList[i].setup()

for i in range(len(userList)):
print str(userList[i].listA)
print str(userList[i].listB)

预期输出

['a']
['b']
['a']
['b']
['a']
['b']
['a']
['b']
['a']
['b']

实际输出

['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']

讨论

我很感激任何关于为什么会发生这种情况的解释。我不确定内置的 append() 函数是否以某种方式影响所有用户,或者每个用户是否以某种方式共享他们的字段。在 Python 2.7.3 上运行。

最佳答案

将此与您的代码进行比较

class User():
def setup(self):
self.listA = [] # instance variable
self.listB = [] # instance variable
for i in range(1):
self.listA.append('a')
self.listB.append('b')

请注意,没有必要在类级别“声明”任何变量

关于带有列表和追加的 Python 奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com