簡體   English   中英

如何在不更改 python 中的原始值的情況下將二維數組中的元素分配給新變量?

[英]How to assign an element from a 2D array to a new variable without changing its original value in python?

我想從 2D 數組中獲取一個值(因此該值具有數組類型)並將其分配給一個新變量。 但是當我對這個新變量進行更改時,它在該二維數組中的原始值也會發生變化。 我想知道是否有正確的方法可以做到這一點?

這是我的示例代碼。

a = [[1],[2],[3]]
b = a[1]
b.append(2)
a.append(b)
print(a)
print(b)

在 output 中,a、b 將是

a = [[1], [2, 2], [3], [2, 2]]
b = [2, 2]

我不希望 a[1] 也被更改。 如果有人可以幫我解決這個問題? 謝謝。

對於初學者來說,這可能是最令人困惑的概念之一,當您進行訂閱切片時, b = a[1] ,對第一個數組a的引用已傳遞給b ,您對b執行的任何操作都將完成到a[1] 除非您制作原始數組的完整副本,否則對下標的任何操作都會導致 original 發生變化,因此,無論何時您想在不更改其初始值的情況下使用數組,請手動復制它。

a = [[1],[2],[3]]
# in your case it is nested so it will be a bit intricate 
ac = list(map(lambda x:list(map(lambda y:y, x)), a))
b = ac[1]
b.append(2)
a.append(b)
print(a)
print(b)
# [[1], [2], [3], [2, 2]]
# [2, 2]

因為a[1]是一個數組,將它傳遞給b將通過引用而不是通過值傳遞它。 您可以使用

b = a[1].copy()

在不影響原始a[1]的情況下a[1]的新實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM