{eval=Array;=+count(Array);}
Id:唯一標識一個對象
Type:標識對象的類型
Value:對象的值
執行結果:
發現l與l1實際是指向同一個對象,l2指向了新的對象(切片生成的新對象)。
l1 is l2 判斷 l1 對象是否就是l2對象(通過id來判斷)
l1 == l2 判斷 l1 對象的值是否和 l2 對象的值相等(通過value來判斷)
前面這個是將對象綁定一個新的變量,L1和L還是指向同一個對象,后后者將對象拷貝一份在賦值給L1,L1指向了新的對象(就是用切片生成的新對象)
這兩者是有區別的,先看下面例子:
>>>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的一部分,是新的列表,所以放入不同的單元。
4
回答1
回答0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答