可能重复: Python list confusion
当我编写一个简单的python脚本时,我定义一个新列表如下:
A=[[],]*10我想做的就是初始化一个长度为10的列表,每个元素都是一个空列表。
当我做这样的事:
A[0].append(["abc",])我只想把这个["abc",]附加到A[0],结果是A中的每个元素都附加了["abc",]
我知道这可能是由于我的初始化(A=[[],]*10)。我只想知道为什么会这样。
发布于 2012-09-22 21:11:43
您正在创建一个列表,其中包含对同一个空列表的10个引用。
您应该使用列表理解,而不是:
A = [[] for _ in range(10)]在列表理解中,您为循环中的每一次迭代创建一个新列表。如果您使用的是python 2,那么您应该使用xrange而不是range (尽管只有10个元素没有多大的区别)。
发布于 2012-09-22 21:09:00
表达式A=[[]]*10等效于:
a = []
A = [a]*10这意味着A包含对一个和同一个列表的10个引用。
发布于 2012-09-22 21:10:01
所有空列表都是对同一个对象的引用。
https://stackoverflow.com/questions/12547710
复制相似问题