繁体   English   中英

在python中将元素从一个列表复制到另一个

[英]Copying element from one list to another in python

假设我创建了两个不同的列表:

listA = [0, 0, 0]
listB = [1, 1, 1]

我想使listB中的一个元素引用与listA中的元素相同的对象。 这样两个列表中的元素都会一起更改。

listB[2] = listA[0]
>>listB[2]
>>0

listB[2] = 2
>>listA[0]
>>2

但是,执行上述操作只是传递元素的值,因此列表仍然引用单个对象。 有没有一种方法或其他数据结构可以使我达到预期的效果?

这是一个入门的简单想法,还可以帮助您更好地了解正在发生的事情:

>>> listA = [[0], [0], [0]]
>>> listB = [[1], [1], [1]]
>>> listA[0] = listB[0]
>>> listA
[[1], [0], [0]]
>>> listB[0][0] = 2
>>> listB
[[2], [1], [1]]
>>> listA
[[2], [0], [0]]

不过要小心:

>>> listB[0] = [3]
>>> listB
[[3], [1], [1]]
>>> listA
[[2], [0], [0]]

您可以编写一个使它不可见的类,使它看起来更像一个列表,并且易于使用而不会出错。

你不能那样做。 您可以让listAlistB自己是同一个对象,在这种情况下, 所有的指数将反映任何所作的任何修改,或者你可以让他们独立的物体,在其指数的情况下, 没有人会反映更改。 您不能创建两个仅“共享”的列表,而仅共享它们的某些索引引用。

假设listB[2]的值是一个称为obj 当您执行诸如listB[2] = 2 ,您不会更改obj 您正在更改listB (通过使其索引2指向其他某个对象)。 因此,除非listAlistB是同一对象,否则不能使listA[2] “反射” listB[2] 您当然可以使listA[2]listB[2]指向同一个对象,但这不会影响listB[2] = 2时发生的情况,因为该操作根本不会影响该共享对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM