簡體   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