{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

Python中list賦值時,L1=L與L1=L[:] 有什么區別?

ZweiZhaoZweiZhao 回答4 收藏1
收藏問題

4條回答

TwIStOy

TwIStOy

回答于2022-06-22 18:40

首先清楚,Python對象的三要素——Id,Type,Value。

  • Id:唯一標識一個對象

  • Type:標識對象的類型

  • Value:對象的值


然后,看下面代碼樣例:

執行結果:

發現l與l1實際是指向同一個對象,l2指向了新的對象(切片生成的新對象)。


同時需要二外注意,l1和l2是否相等呢?

  • l1 is l2 判斷 l1 對象是否就是l2對象(通過id來判斷)

  • l1 == l2 判斷 l1 對象的值是否和 l2 對象的值相等(通過value來判斷)

評論0 贊同0
  •  加載中...
xietao3

xietao3

回答于2022-06-22 18:40

前面這個是將對象綁定一個新的變量,L1和L還是指向同一個對象,后后者將對象拷貝一份在賦值給L1,L1指向了新的對象(就是用切片生成的新對象)

評論0 贊同0
  •  加載中...
AlphaGooo

AlphaGooo

回答于2022-06-22 18:40

這兩者是有區別的,先看下面例子:

>>>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的一部分,是新的列表,所以放入不同的單元。

評論0 贊同0
  •  加載中...
CatalpaFlat

CatalpaFlat

回答于2022-06-22 18:40

一圖勝千語。


L1指向了原來的list

而L2指向了一個新的list

評論0 贊同0
  •  加載中...

相關問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<