Python,将一个列表附加到另一个列表中

16 浏览
0 Comments

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空列表的技巧,但它们并不起作用。

0
0 Comments

Python中,将一个列表附加到另一个列表时,可能会出现问题。出现问题的原因是浅拷贝而不是深拷贝。浅拷贝只是创建了一个指向原始对象的引用,而深拷贝创建了一个完全独立的新对象。

为了解决这个问题,可以使用Python中内置的copy模块。下面是解决方法的代码示例:

import copy
# 将 a.append(b) 替换为以下代码
a.append(copy.deepcopy(b))

使用这种方法,将列表b深拷贝并附加到列表a中,确保两个列表是完全独立的。这样做可以避免因为浅拷贝而导致的问题。

0
0 Comments

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)),我们可以避免两个变量指向同一个对象的问题,保证了每个变量引用的是不同的列表对象。这样,在修改其中一个列表时,不会影响到另一个列表。

0