好的,首先检查以下代码:
Demo1 = [[], []]
Demo2 = [[]] * 2
Demo1[0].append(1)
Demo2[0].append(1)
print "Demo1: ", Demo1
print "Demo2: ", Demo2
输出如下:
^{pr2}$我需要创建一个列表,它的项也都是list,就像Demo1
和Demo2
,当然我在脚本中使用了Demo2
,直到我找到原因,你可以从上面的代码中看到。为什么会这样?大多数情况下,我都会使用Demo2
来创建这样的列表,因为它的长度每次都不一样,但是我如何在列表中的单独列表中附加一个项而不陷入这种混乱呢?在
Demo2
是一个包含对同一列表的两个引用的列表。在对于您的第一个问题:发生这种情况是因为在demo 2中,您的列表包含同一对象的两个副本。请参阅下面的示例,其中我打印了这些元素的内存位置,注意它们在Demo1中不同,但与Demo2匹配。在
对于你的第二个问题:你可以使用列表理解,比如
[[] for i in xrange(n)]
,这样可以创建一个新的列表n次,而不是重复相同的列表n次。在示例:
^{pr2}$相关问题 更多 >
编程相关推荐