Python中数组合并而非追加

-1 投票
4 回答
79 浏览
提问于 2025-04-14 18:32

我正在尝试在Python中将这两个数组合并,但得到了意想不到的结果:

This = []
That = []

This.append('A')
That.append(This)

This.append('B')
That.append(This)

print(That)

我期望的结果是:[['A'],['A','B']]

但实际得到的结果是:[['A','B'],['A','B']]

而这个方法则如我所愿:

That = []

This = ['A']
That.append(This)

This2 = ['A', 'B']
That.append(This2)

print(That)

我期望的结果是:[['A'],['A','B']]

实际得到的结果是:[['A'],['A','B']]

4 个回答

0

你得到意外结果的原因是,This和That其实指向的是同一个列表对象。当你把This添加到That时,你实际上是把对同一个列表的引用添加到了That里。所以当你修改This时,That里也会反映出这些修改。

为了得到你想要的结果,你需要在把This添加到That之前先复制一份This,这样对This的修改就不会影响到已经添加到That里的内容。

This = []
That = []

This.append('A')
That.append(This.copy())

This.append('B')
That.append(This.copy())

print(That)
0

问题出现在你代码的第7行。当我第二次用 This.append('B') 更新 This 数组时,它会自动在 That 数组中也更新。

类似的问题:

Python 列表在添加元素时更新元素

希望这能帮到你。

2

你可以把“this”看作是一个对象。如果你想要两个不同的对象,就得复制这个对象,比如用 That.append(This.copy()) 这样的方式。

https://docs.python.org/3/library/copy.html

撰写回答