1. 程式人生 > >Python資料型別之list相關常用操作

Python資料型別之list相關常用操作

列表:在其他程式語言中稱為“陣列”,是一種基本的資料結構型別。

關於列表的問題:

列表中元素使如何儲存的?

元素其實是記憶體地址,指向真正的元素,因為元素重複的時候,可以重複指向(省記憶體)

列表提供了哪些基本的操作?

列表操作包含以下函式:
1、cmp(list1, list2):比較兩個列表的元素 
2、len(list):列表元素個數 
3、max(list):返回列表元素最大值 
4、min(list):返回列表元素最小值 
5、list(seq):將元組轉換為列表 
列表操作包含以下方法:
1、list.append(obj):在列表末尾新增新的物件
2、list.count(obj):統計某個元素在列表中出現的次數
3、list.extend(seq):在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表)
4、list.index(obj):從列表中找出某個值第一個匹配項的索引位置
5、list.insert(index, obj):將物件插入列表
6、list.pop(obj=list[-1]):移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
7、list.remove(obj):移除列表中某個值的第一個匹配項
8、list.reverse():反向列表中元素
9、list.sort([func]):對原列表進行排序

10、改list[index]=obj

11、obj in list 判斷

12、刪除del list[2]、刪除del list

 

這些操作的時間複雜度是多少?

增append(O(1))

插insert(O(n))

改 li[index] =obj (O(1))

移 remove (O(n))

查  in list  (O(n))

 

copy(淺複製):

只拷貝父物件不會拷貝其子物件,修改子物件,將受影響

(簡單理解,大列表的value修改了,淺複製不會做任何修改,大列表裡面的小列表的value修改,淺複製會跟著修改)

 

deepcopy(深複製)

深複製,將拷貝其父子物件,修改父子物件,將不受影響(簡單就是完整複製一份出來,兩個互不關聯,一個如何修改都不會影響另外一個)

 

實戰解釋

list = ["Zks","Fxm","Zzc","Zsy"]  

list=列表 ["元素" , "元素" ,"元素","元素"]

      下標      0           1         2         3

list [0]   切片  取下標0的元素

list [1:3] 切片  為什麼是取下標1和2的元素

list [-1]    最右邊的下標 也就是zsy

list [-3:-1] 切片值可以從左到右切,不可以從右到做切 ,但是這樣造成-1下標切不到

list [-3:]  單獨一個冒號:代表從-3該下標直接切到結尾

list [:2] = [0:2]  切0到1

for index,item enumerate(names) : 獲取物件的下標(index)和value

    index = 0    index = 1    index = 2    index = 3

    item = Zks      ......        ....        item= Zsy

 

list .append("xxx")             # xxx追加到尾部   不能批量

list .insert(1,"xxx ")      #xxx插入到1下標   不能批量

list [2] = "xxx"                 #下標2替換成xxx

list .pop(1)                    #刪除下標1,如果小括號 ()不輸入下標就預設刪除最後一個下標的元素

print(list .index("xxx"))         # 檢視xxx字串的下標

print(list [list.index("xxx")])  #顯示該元素的下標

print (list.count("xxx"))       #計算xxx重複次數

list .clear()                    #清空所有下標

list .reverse()                  #反轉:左到右 右變成左

list .sort()      排序預設是按第一個字元:如果是特殊符號#@$! 優先排序 次之:按數字排序 再次字母排序  ASCII碼排序的

list .extend(list1)  把list1該列表的元素合併到變數列表裡面元素後面

del list1  刪除list1