回覆列表
-
1 # lichengsheng2
-
2 # Python之禪
前面這個是將物件繫結一個新的變數,L1和L還是指向同一個物件,後後者將物件複製一份在賦值給L1,L1指向了新的物件(就是用切片生成的新物件)
-
3 # 軟體測試開發技術棧
首先清楚,Python物件的三要素——Id,Type,Value。
Id:唯一標識一個物件
Type:標識物件的型別
Value:物件的值
然後,看下面程式碼樣例:執行結果:
發現l與l1實際是指向同一個物件,l2指向了新的物件(切片生成的新物件)。
同時需要二外注意,l1和l2是否相等呢?l1 is l2 判斷 l1 物件是否就是l2物件(透過id來判斷)
l1 == l2 判斷 l1 物件的值是否和 l2 物件的值相等(透過value來判斷)
-
4 # 外星人玩Python
一圖勝千語。
L1指向了原來的list
而L2指向了一個新的list
這兩者是有區別的,先看下面例子:
>>>L=[1,2,3,4]
>>>L1=L
>>>L2=L[:]
>>>L[1]=5
>>>L
[1,5,3,4]
>>>L1
[1,5,3,4]
>>>L2
[1,2,3,4]
L改變後,L1跟著變,L2並不改變。列表變數是這樣實現的:
首先有列表值,例如上面的[1,2,3,4],存在計算機某一單元中,我們假定此單元是編號沒。在L中實際上放的是單元編號m,當我們把L賦值給L1時,L1中放入的也是m。所以當我們更改L時,python解釋程式,先根據L中的單元編號,找到存放列表值的單元,然後更改此單元的內容。由於L1與L中都是編號m,所以兩者同時更改。L2時L的一部分,是新的列表,所以放入不同的單元。