Python,将一个列表附加到另一个列表中
Python,将一个列表附加到另一个列表中
我需要将一个列表附加到一个二维列表中,以便我可以编辑添加的列表。我有以下这样的代码:\n
n = 3 a = [ ['a', 2, 3], ['b', 5, 6], ['c', 8, 9] ] b = [None for _ in range(n)] # [None] * n print b a.append(b) a[3][0] = 'e' print a a.append(b) a[4][0] = 'f' print a
\n我得到的结果是:\n
[None, None, None] [['a', 2, 3], ['b', 5, 6], ['c', 8, 9], ['e', None, None]] [['a', 2, 3], ['b', 5, 6], ['c', 8, 9], ['f', None, None], ['f', None, None]]
\n第四行的e
变成了f
,这并不是我想要的。使用[None] * 3
也得到了相同的结果。我该如何防止这种情况发生?我查看了如何在Python中创建固定大小的列表和Python空列表的技巧,但它们并不起作用。
Python中,将一个列表追加到另一个列表的操作被称为"appending a list to another list"。这个问题的出现是因为在Python中,当我们将一个列表赋值给另一个变量时,实际上这两个变量都指向同一个内存地址,即它们引用的是同一个对象。
解决这个问题的方法是创建新的列表副本,而不是让新的变量指向同一个对象。具体的解决方法是使用a.append(list(b))
,这样就可以创建一个新的列表副本,并将其追加到另一个列表中。
这里是一个示例代码,演示了如何将一个列表追加到另一个列表并创建新的副本:
a = [1, 2, 3] b = [4, 5, 6] a.append(list(b)) print(a) # 输出结果为 [1, 2, 3, [4, 5, 6]]
在上面的示例中,我们将列表b追加到列表a中,并使用list(b)
创建了一个新的列表副本。最后,我们输出列表a的内容,可以看到列表b被成功追加到了列表a中。
通过使用a.append(list(b))
,我们可以避免两个变量指向同一个对象的问题,保证了每个变量引用的是不同的列表对象。这样,在修改其中一个列表时,不会影响到另一个列表。