python中切片的淺複製探究

m53469發表於2021-09-11

python中切片的淺複製探究

本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。

1、淺複製說明

淺複製,複製了最外圍的物件本身,內部的元素都只是複製了一個引用而已。也就是,把物件複製一遍,但是該物件中引用的其他物件我不復制。

2、切片複製例項

切片操作的返回結果是一個新的獨立的序列。以列表為例,列表切片後得到的還是一個列表,佔用新的記憶體地址。

當取出切片的結果時,它是一個獨立物件,因此,可以將其用於賦值操作,也可以用於其它傳遞值的場景。但是,切片只是淺複製,它複製的是原列表中元素的引用,所以,當存在變長物件的元素時,新列表將受制於原列表。

li = [1, 2, 3, 4]
ls = li[::]
 
li == ls # True
id(li) == id(ls) # False
li.append(li[2:4]) # [1, 2, 3, 4, [3, 4]]
ls.extend(ls[2:4]) # [1, 2, 3, 4, 3, 4]
 
# 下例等價於判斷li長度是否大於8
if(li[8:]):
    print("not empty")
else:
    print("empty")
 
# 切片列表受制於原列表
lo = [1,[1,1],2,3]
lp = lo[:2] # [1, [1, 1]]
lo[1].append(1) # [1, [1, 1, 1], 2, 3]
lp # [1, [1, 1, 1]]

由於可見,將切片結果取出,它可以作為獨立物件使用,但是也要注意,是否取出了變長物件的元素。

以上就是python中切片的淺複製探究,相信大家對切片的複製方式已經有所明確。對於文章內容有不瞭解的地方,可以先複習一下基本概念。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2830782/,如需轉載,請註明出處,否則將追究法律責任。

相關文章