python3随笔-copy与索引
生活随笔
收集整理的這篇文章主要介紹了
python3随笔-copy与索引
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
>>> import copy
>>> x=[1,2,3]
>>> z=copy.copy(x)
>>> x
[1, 2, 3]
>>> z
[1, 2, 3]
>>> y=copy.deepcopy(x)
>>> y
[1, 2, 3]
>>> z
[1, 2, 3]
列表直接賦值采用的是復(fù)制其引用,而不是值復(fù)制,而調(diào)用copy模塊則實(shí)現(xiàn)真正的復(fù)制。
>>> y[1]=12 >>> z[0]=31 >>> x [1, 2, 3] >>> y [1, 12, 3] >>> z [31, 2, 3]copy和deepcopy都實(shí)現(xiàn)了數(shù)據(jù)的復(fù)制,但其實(shí)不然。
copy為淺copy,只復(fù)制了第一層數(shù)據(jù),列表里存儲(chǔ)的子列表,打印出來(lái)是子列表,其實(shí),在內(nèi)存里,列表里只是存儲(chǔ)了子列表的內(nèi)存地址,子列表在內(nèi)存里是單獨(dú)存儲(chǔ)的
比如:
下面代碼沒(méi)有改變x的原因是因?yàn)閦在第一層實(shí)現(xiàn)的復(fù)制,只是簡(jiǎn)單把第1層的第3個(gè)元素進(jìn)行了替代。
>>> z[2]=[101,102,103] >>> z [9, 23, [101, 102, 103]] >>> x [11, 23, [222, 11, 15]] >>>deepcopy實(shí)現(xiàn)了完全復(fù)制
>>> x [11, 23, [222, 11, 15]] >>> y=copy.deepcopy(x) >>> x [11, 23, [222, 11, 15]] >>> y [11, 23, [222, 11, 15]] >>> y[2][1]=10001 >>> y [11, 23, [222, 10001, 15]] >>> x [11, 23, [222, 11, 15]] >>> 正向索引與負(fù)向索引
>>> x=[1,2,3,4,5,6] >>> x[-1] 6 >>> x[-2] 5 >>> x[1] 2 >>> x[0] 1總結(jié)
以上是生活随笔為你收集整理的python3随笔-copy与索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二项分布-python3
- 下一篇: websocket python爬虫_p