在 python 中将元素从一个列表复制到另一个列表
Copying element from one list to another in python
假设我创建了两个不同的列表:
listA = [0, 0, 0]
listB = [1, 1, 1]
我想让 listB 中的 an 元素与 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]]
你可以写一个 class 让它不可见,这样它看起来更像一个列表并且更容易使用而不会出错。
你不能那样做。您可以使 listA
和 listB
本身成为同一个对象,在这种情况下 all 它们的索引将反映对其中任何一个所做的任何更改,或者您可以使它们单独的对象,在这种情况下,它们的索引的 none 将反映更改。您不能创建两个列表 "joined at the hip",仅共享它们的一些索引引用。
假设 listB[2]
的值是某个名为 obj
的对象。当你做类似 listB[2] = 2
的事情时,你并没有改变 obj
;您正在更改 listB
(通过使其索引 2 指向其他某个对象)。所以你不能使 listA[2]
"reflect" listB[2]
除非 listA
和 listB
是同一个对象。您当然可以使 listA[2]
和 listB[2]
引用同一个对象,但这不会影响您执行 listB[2] = 2
时发生的情况,因为该操作根本不会影响该共享对象.
假设我创建了两个不同的列表:
listA = [0, 0, 0]
listB = [1, 1, 1]
我想让 listB 中的 an 元素与 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]]
你可以写一个 class 让它不可见,这样它看起来更像一个列表并且更容易使用而不会出错。
你不能那样做。您可以使 listA
和 listB
本身成为同一个对象,在这种情况下 all 它们的索引将反映对其中任何一个所做的任何更改,或者您可以使它们单独的对象,在这种情况下,它们的索引的 none 将反映更改。您不能创建两个列表 "joined at the hip",仅共享它们的一些索引引用。
假设 listB[2]
的值是某个名为 obj
的对象。当你做类似 listB[2] = 2
的事情时,你并没有改变 obj
;您正在更改 listB
(通过使其索引 2 指向其他某个对象)。所以你不能使 listA[2]
"reflect" listB[2]
除非 listA
和 listB
是同一个对象。您当然可以使 listA[2]
和 listB[2]
引用同一个对象,但这不会影响您执行 listB[2] = 2
时发生的情况,因为该操作根本不会影响该共享对象.