在python中,如何将项附加到列表中?

2024-05-13 20:16:58 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,首先检查以下代码:

Demo1 = [[], []]
Demo2 = [[]] * 2
Demo1[0].append(1)
Demo2[0].append(1)
print "Demo1: ", Demo1
print "Demo2: ", Demo2

输出如下:

^{pr2}$

我需要创建一个列表,它的项也都是list,就像Demo1Demo2,当然我在脚本中使用了Demo2,直到我找到原因,你可以从上面的代码中看到。为什么会这样?大多数情况下,我都会使用Demo2来创建这样的列表,因为它的长度每次都不一样,但是我如何在列表中的单独列表中附加一个项而不陷入这种混乱呢?在


Tags: 代码脚本列表情况原因listprintappend
2条回答

Demo2是一个包含对同一列表的两个引用的列表。在

Demo2 = [[] for x in range(2)]

对于您的第一个问题:发生这种情况是因为在demo 2中,您的列表包含同一对象的两个副本。请参阅下面的示例,其中我打印了这些元素的内存位置,注意它们在Demo1中不同,但与Demo2匹配。在

>>> Demo1 = [[], []]
>>> Demo2 = [[]] * 2
>>> print id(Demo1[0]), id(Demo1[1])
33980568 34018800
>>> print id(Demo2[0]), id(Demo2[1])
34169920 34169920

对于你的第二个问题:你可以使用列表理解,比如[[] for i in xrange(n)],这样可以创建一个新的列表n次,而不是重复相同的列表n次。在

示例:

^{pr2}$

相关问题 更多 >