Python 如何修复我的程序,使其不复制或完全删除我的';信息';列表

Python 如何修复我的程序,使其不复制或完全删除我的';信息';列表,python,pycharm,Python,Pycharm,我正在写一个程序,从学生和他们的名字中抽取10个测试分数,并将这些信息放入列表中。我发现了一个问题,那就是我在重复。把东西添加到我的“信息”列表中,得到了重复的数据。然而,当我试图修复它时,程序会不断返回空列表或仅包含第二组名称和测试分数的列表。我不知道为什么会发生这种情况,任何帮助都将不胜感激 我试过: del info[:] info.clear() 对于范围内的i len(信息): info.pop() w 预期结果:[[student1name、1testscore1、1testsc

我正在写一个程序,从学生和他们的名字中抽取10个测试分数,并将这些信息放入列表中。我发现了一个问题,那就是我在重复。把东西添加到我的“信息”列表中,得到了重复的数据。然而,当我试图修复它时,程序会不断返回空列表或仅包含第二组名称和测试分数的列表。我不知道为什么会发生这种情况,任何帮助都将不胜感激

我试过:

  • del info[:]
  • info.clear()
  • 对于范围内的i len(信息): info.pop()
w

预期结果:
[[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 = []