Python 将元素添加到空列表会产生意外行为

Python 将元素添加到空列表会产生意外行为,python,Python,我正在用pygame做一个小游戏,用于强化学习(openAI gym),但我遇到了列表/字典的问题。我认为这与所有指向同一内存地址的空列表有关,但我不理解在这种情况下为什么/如何或如何避免它 最终,我希望能够使用空列表或dict来实现这一点,我正在尝试将形式为((int1,int2,int3))的元组列表按其第二个元素(int3)分组 我在初始化空数组时尝试过使用copy(),但没有任何区别。我没有从教程或文档页面中找到/理解任何有用的内容,因此我非常希望能简要说明如何避免此问题 def工作(t

我正在用pygame做一个小游戏,用于强化学习(openAI gym),但我遇到了列表/字典的问题。我认为这与所有指向同一内存地址的空列表有关,但我不理解在这种情况下为什么/如何或如何避免它

最终,我希望能够使用空列表或dict来实现这一点,我正在尝试将形式为((int1,int2,int3))的元组列表按其第二个元素(int3)分组

我在初始化空数组时尝试过使用copy(),但没有任何区别。我没有从教程或文档页面中找到/理解任何有用的内容,因此我非常希望能简要说明如何避免此问题

def工作(t):
lst=[[1]、[2]、[3]]
lst[1]。追加([x表示t中的x,如果x[1]==1])
返回lst
def不工作(t):
lst=3*[list()]
lst[1]。追加([x表示t中的x,如果x[1]==1])
返回lst
t=[('a'),0),('b'),1),('c'),1),('d'),2]
打印('预期结果:')
印刷(作品(t))
打印('令人困惑的结果:')
打印(不工作(t))
lst=3*[list()]

这将创建对同一列表的3个引用。对范围(n)中的i使用
lst=[[]值
lst=3*[list()]

这将创建对同一列表的3个引用。对范围(n)中的i使用
lst=[]

Expected Result:
[[1], [2, [('b', 1), ('c', 1)]], [3]]
Confusing Result:
[[[('b', 1), ('c', 1)]], [[('b', 1), ('c', 1)]], [[('b', 1), ('c', 1)]]]