Python 为什么要复制(列表、词汇表)
我告诉python将1添加到最后一个位置,但似乎每个元素都是相同的。您创建了一个对象,Python 为什么要复制(列表、词汇表),python,list,dictionary,Python,List,Dictionary,我告诉python将1添加到最后一个位置,但似乎每个元素都是相同的。您创建了一个对象,[0],并将该对象重复了10次。您的所有更改都在更改此单个对象。 相反,您应该创建10个不同的对象 >>> save = lambda : {'a':[[0]]*10} >>> s = save() >>> s {'a': [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]} >>> s['
[0]
,并将该对象重复了10次。您的所有更改都在更改此单个对象。相反,您应该创建10个不同的对象
>>> save = lambda : {'a':[[0]]*10}
>>> s = save()
>>> s
{'a': [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]}
>>> s['a'][-1].append(1)
>>> s
{'a': [[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]]}
您创建了一个对象,
[0]
,并将该对象重复了10次。您的所有更改都在更改此单个对象。相反,您应该创建10个不同的对象
>>> save = lambda : {'a':[[0]]*10}
>>> s = save()
>>> s
{'a': [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]}
>>> s['a'][-1].append(1)
>>> s
{'a': [[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]]}
'a'
是列表中包含零的同一列表的十倍。'a'
是列表中包含零的同一列表的十倍。虽然此代码可能会解决OP的问题,但最好包含关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充说明。您可以创建一个对象[0],然后重复此对象10次。您的所有更改都已更改此对象。你应该创建10个不同的对象。虽然这段代码可能会解决OP的问题,但最好包含一个解释,说明你的代码如何解决OP的问题。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充说明。您可以创建一个对象[0],然后重复此对象10次。您的所有更改都已更改此对象。您应该创建10个不同的对象。