![](/img/trans.png)
[英]Copying a certain number of elements from one list to another in 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]]
您可以編寫一個使它不可見的類,使它看起來更像一個列表,並且易於使用而不會出錯。
你不能那樣做。 您可以讓listA
和listB
自己是同一個對象,在這種情況下, 所有的指數將反映任何所作的任何修改,或者你可以讓他們獨立的物體,在其指數的情況下, 沒有人會反映更改。 您不能創建兩個僅“共享”的列表,而僅共享它們的某些索引引用。
假設listB[2]
的值是一個稱為obj
。 當您執行諸如listB[2] = 2
,您不會更改obj
; 您正在更改listB
(通過使其索引2指向其他某個對象)。 因此,除非listA
和listB
是同一對象,否則不能使listA[2]
“反射” listB[2]
。 您當然可以使listA[2]
和listB[2]
指向同一個對象,但這不會影響listB[2] = 2
時發生的情況,因為該操作根本不會影響該共享對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.