自定義在列表頭部新增元素的方法,即insert_head 方法
阿新 • • 發佈:2018-11-28
class Mylist(list):
def insert_head(self, n):
# 下面這種方法是不可行的,在這個方法中insert_head(2)的結果就是[3, 4, 5]
# L = [n] # 開闢了新的物件空間
# for x in self:
# L.append(x)
# print(L)
# self = L
# print(self)
#return self
# 因為這裡返回的物件和原來myl指向的物件是不一樣的,myl.insert_head(2) 不是賦值語句,
# 因此myl不會指向(繫結)所返回的物件([2,3,4,5]),而是指向[3,4,5]這個物件(地址)
# 下面兩種方式是可行的,它們都是在原物件插入新的元素,然後myl繫結的物件不變
# self[0:0] = [n] # 用切片頭插
myl = Mylist(range(3, 6))
print(myl)
myl.insert_head(2) # [2, 3, 4, 5]
print(myl)
myl.append(6)
print(myl)
總結:在變數和物件的等號賦值過程中,記憶體中將新開闢記憶體空間儲存這個物件,然後(當變數原本指向一個變數時)變數指向的是新的記憶體空間