簡體   English   中英

LIST和TUPLE賦值操作

[英]LIST and TUPLE assignment operation

為什么在示例II中只有元組更改而在示例I中這兩個列表都發生了變化? 請考慮這兩個程序及其各自的輸出(I和II)。

L1 = [1,2,3,4]
L2 = L1
L2.append(5)
print("L1: ", L1)
print("L2: ", L2)

輸出 :L1:[1,2,3,4,5] L2:[1,2,3,4,5]

L1=(1,2,3,4)
L2=L1
L2 += (5,)
print("L1: ", L1)
print("L2: ", L2)

輸出 :L1:(1,2,3,4)L2:(1,2,3,4,5)

a = b使得a指代相同的對象作為b 但是元組是不可變的,所以+=創建一個新的元組,保持原始元素不變。

在第一個示例中,L1和L2都指向存儲的數據,因此如果您更改L1或L2中的任何一個,數據會發生變化,並且通過調用(不確定正確的表達式)L1或L2中的任何一個,新的更改數據將是所示。 這種解釋適用於列表。 列表是可變的。 在第二個示例中,您使用的是不可變的元組。 當你想要改變一個不可變的元組時,python會自動創建一個新的元組。 這意味着當你向元組L2添加5時,實際上5不會加到原始元組,python會創建一個名為L2的新元組,並添加新數據(5)並保留原始數據(L1)不變。 這就是為什么L1沒有改變但L2是。

暫無
暫無

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

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