Python學習之列表的建立及操作和深淺拷貝

2021-09-11 06:17:08 字數 2953 閱讀 6930

1.空列表的建立、記憶體分配、元素的訪問取值和替換,新增,刪除,清除、元素段的擷取、 出現的次數、最大值和最小值

#建立乙個空列表:一般列表命名為list***

list1 =

print(list1)

#建立乙個有元素的列表,list2在堆裡開闢空間,其中的元素在棧裡開闢空間

list2 = [10,30,54,5,6]

print(list2)

#同一列表,可以儲存不同型別的元素

list3 = [true,none,"hello",10]

print(list3)

#列表內元素的訪問:使用取值或者替換

print(list3[2])

list3[2]=100

print(list3[2])

#列表操作:組合、重複、元素是否在列表中、列表的擷取

list4 = list2 + list3

print(list4)

list4 = list4*2

print(list4)

print(10 in list4)

print(list4[1:4]) #涉及到區間包頭不包尾,前閉後開區間

#列表的功能:追加元素、末尾追加、刪除、移除、獲取列表長度、最大值、最小值、拷貝

print(list2)

print(list2)

list2.extend([40,50]) #不是新增列表,而是新增元素

print(list2)

list2.insert(2,100) #引數有兩個,乙個是插入位置,另乙個是插入元素

print(list2)

list2.insert(1,[50,20]) #插入是整個列表

print(list2)

list2.pop() #刪除末尾乙個元素

print(list2)

list2.pop(2) #刪除位置索引2的元素

print(list2)

list2.remove([50,20]) #刪除元素[50,20]

list2.remove([50])

print(list2)

'''list2.clear() #清楚列表所有元素

print(list2)

'''print(len(list2))

print(max(list2)) #最大值

print(min(list2)) #最小值

print(list2.count(10)) #元素10在列表list2**現的次數

list5 = [10,5,1,23,54,98,46] #淺拷貝:引用的拷貝,在棧裡面,不改變實體

list51 = list5

list51[2] = 11

print(list5)

print(list51)

list5 = [10,5,1,23,54,98,46] #深拷貝:拷貝實體,在堆裡面

list52 = list5.copy()

list52[2] = 11

print(list5)

print(list52)

結果顯示:

2.深淺拷貝的含義和具體使用

淺拷貝:相當於引用,改變本值,引用的值也隨之改變

深拷貝:相當於備份,拷貝的是實體物件

#從記憶體的角度

list5 = [10,5,1,23,54,98,46] #淺拷貝:引用【棧空間】的拷貝,不改變實體

list51 = list5

list51[2] = 11

print(list5)

print(list51)

list5 = [10,5,1,23,54,98,46] #深拷貝:記憶體【堆空間】,拷貝實體,相當於拷貝備份

list52 = list5.copy()

list52[2] = 11

print(list5)

print(list52)

#從內容的角度【多層拷貝】

#匯入了copy模組

#copy():淺拷貝

import copy

a = [1,2,3]

b = [4,5,6]

c = [a,b] #引用,本身變了,引用的值也隨之改變

print(c)

d = copy.copy(c)

print(id(c),id(d))

#deepcopy():深拷貝

e = copy.deepcopy(c) #拷貝實體,

print(id(c),id(e))

#給a追加元素,看c,d,e是否改變了

print(a)

print(c)

print(d)

print(e)

print(id(a),id(c),id(d),id(e))

說明(易出錯點):當未匯入copy模組時候,list.copy():是深拷貝,相當於word檔案的備份,改動備份檔案,對原始檔案不會有所修改。

當匯入import copy模組的時候,copy():是淺拷貝,deepcopy():是深拷貝,位址都不會相同。

Python學習之列表

python學習之列表 之前一直對python中建立陣列型別比較矇圈,今天仔細整理加實踐了一下,代如下 建立二維列表 n int input 建立二維列表是不是只能建立列元素一樣的 將列表中的位置都賦值 list 0 2 n 1 for i in range n print list 建立空列表 l...

Python學習之列表

1.list型別 用括號 表示,不同的元素之間可以逗號隔開。list在被初始化後可以被再次修改。注 如果開發者定義了一組值,並且在之後需要不斷對其進行增 刪 改等操作,則應該使用list型別。2.內建函式包括 通用函式 不僅適用數值型別的變數,還適用其他型別的變數 特定函式 只適用數值型別的變數 注...

Python學習筆記之列表

1 列表增刪改查 list.pop 列表末尾刪除資料項 list.extend 列表末尾增加資料項 list.remove 找到並刪除乙個特定的資料項 list.insert 槽編號,在特定位置前增加乙個資料項 2 for迴圈處理任意大小的列表 for 目標識別符號 in 列表 列表處理 被稱為組 ...