Python 如何修复我的程序,使其不复制或完全删除我的';信息';列表
我正在写一个程序,从学生和他们的名字中抽取10个测试分数,并将这些信息放入列表中。我发现了一个问题,那就是我在重复。把东西添加到我的“信息”列表中,得到了重复的数据。然而,当我试图修复它时,程序会不断返回空列表或仅包含第二组名称和测试分数的列表。我不知道为什么会发生这种情况,任何帮助都将不胜感激 我试过:Python 如何修复我的程序,使其不复制或完全删除我的';信息';列表,python,pycharm,Python,Pycharm,我正在写一个程序,从学生和他们的名字中抽取10个测试分数,并将这些信息放入列表中。我发现了一个问题,那就是我在重复。把东西添加到我的“信息”列表中,得到了重复的数据。然而,当我试图修复它时,程序会不断返回空列表或仅包含第二组名称和测试分数的列表。我不知道为什么会发生这种情况,任何帮助都将不胜感激 我试过: del info[:] info.clear() 对于范围内的i len(信息): info.pop() w 预期结果:[[student1name、1testscore1、1testsc
- del info[:]
- info.clear()
- 对于范围内的i len(信息): info.pop()
[[student1name、1testscore1、1testscore2等],[student2name、2testscore1、2testscore2等]
实际结果:
[[]、[]]
或[[student2name、2testscore1、2testscore2等]、[student2name、2testscore1、2testscore2等]
尝试不直接将信息附加到testinfo中使用:
testinfo.append(copy.deepcopy(info))
我认为您的问题在于您的信息列表指向listinfo中的列表。因此,如果您的删除信息列表也在删除信息列表的内容。
我想你需要导入副本。希望这有帮助
info = []
- 在内存中的某个位置创建新列表
- 创建一个名为
的绑定,该绑定指向该内存区域info
- 创建绑定的副本
info
- 将该绑定存储在
列表中testinfo
- 删除与
info
中的绑定指向同一内存位置,因此被删除testinfo
不必手动删除列表,只需重新分配一个新的列表对象即可:
info = []
或者将
info
放入循环的范围。谢谢,这解决了问题!没问题,我很高兴能帮上忙。:)
testinfo.append(info)
del info[:]
info = []