Python中数组合并而非追加
我正在尝试在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
数组中也更新。
类似的问题:
希望这能帮到你。
2
你可以把“this”看作是一个对象。如果你想要两个不同的对象,就得复制这个对象,比如用 That.append(This.copy())
这样的方式。