小白眼中的Python3.0中對資料型別List的相關操作
PS:本人小白,剛開始自學,先重在使用,再由淺入深,其中有現階段未領悟到的和筆誤,望前輩指出修正 :)
轉載也請註明出處哦~
因為學完了Python中資料型別List的章節,所以對個別常用相關操作做個彙總,日後再慢慢增加,做個備忘
1. 建立List資料型別操作
1)使用 list() 函式可以建立一個空連結串列,將其賦值給一個變數即可以方便的對其進行操作和使用
2)使用 [ ] 也可以建立一個空連結串列,將其賦值給一個變數即可以方便的對其進行操作和使用
>>>listDemo1 = list() >>>print (listDemo1) >>>[] >>> >>>listDemo2 = [] >>>print (listDemo2) >>>[] >>>
2.向List中新增元素
1)直接建立的時候向list賦值:
>>>listDemo3 = [1, 2, 3, 4, 5, 6]
>>>print (listDemo3)
>>>[1, 2, 3, 4, 5, 6]
>>>
>>>listDemo4 = [1, 'a', 3.4, [5, 6]]
>>>print (listDemo4)
>>>[1, 'a', 3.4, [5, 6]]
>>>
2)使用append()向list新增元素(PS:append是向連結串列中新增元素,就算是新增連結串列也是作為原連結串列的元素,如下圖所示)
>>>listDemo1.append(1)
>>>print (listDemo1)
>>>[1]
>>>
>>>listDemo1.append([1, 2, 3])
>>>print (listDemo1)
>>>[1, [1, 2, 3]]
>>>
3)使用extend()向list新增元素(書上說是擴充套件,這邊只是為了好歸納這樣寫,不必糾結字面意思,真正瞭解新增後是什麼樣的存 在才是核心)
>>>test1 = [1, 2, 3] >>>test2 = [4, 5, 6] >>>test1.extend(test2) >>>print (test1) >>>[1, 2, 3, 4, 5, 6] >>>
3. 刪除List中的元素
1)使用pop(i)函式刪除List中的元素(使用下標刪除)
PS:該函式返回被刪除的位於List[i]的值(i從0開始), 預設引數為-1,所以如果不提供引數將會刪除List最後一個元素
>>>print (listDemo1)
>>>[1, [1, 2, 3]]
>>>listDemo1.pop()
>>>[1, 2, 3]
>>>print (listDemo1)
>>>[1]
>>>
>>>print (listDemo3)
>>>[1, 2, 3, 4, 5, 6]
>>>listDemo3.pop(0)
>>>1
>>>print (listDemo3)
>>>[2, 3, 4, 5, 6]
>>>
2)使用del 刪除list中的值(不返回刪除的值,使用下標刪除)
>>>print (listDemo3)
>>>[2, 3, 4, 5, 6]
>>>
>>>del listDemo3[1]
>>>
>>>print (listDemo3)
>>>[2, 4, 5, 6]
>>>
>>>del listDemo[1:3] #不明白這個下標的意思可以接著往下面對List的操作,該操作實現了刪除多個元素
>>>
>>>print (listDemo3)
>>>[2, 6]
>>>
3)使用remove(x)對元素進行操作(對值進行操作)
PS:不返回刪除元素,該函式刪除List中第一個出現的x
>>>listDemo5 = [1, 2, 3, 3, 4, 5]
>>>print (listDemo5)
>>>[1, 2, 3, 3, 4, 5]
>>>
>>>listDemo5.remove(3)
>>>
>>>print (listDemo5)
>>>[1, 2, 3, 4, 5]
4. 修改List中的元素
1)通過下標對List中的元素進行修改
>>>print (listDemo3)
>>>[2, 6]
>>>
>>>listDemo3[1] = 7
>>>
>>>print (listDemo3)
>>>[2, 7]
>>>
>>>listDemo1 = [1, 2, 3, 4, 5, 6]
>>>listDemo1[1:3] = ['x', 'y', 'z']
>>>print (listDemo1)
>>>[1, 'x', 'y', 'z', 4, 5, 6]
>>>
>>>listDemo1[1:3:2] = ['m']
>>>print (listDemo1)
>>>[1, 'm', 'y', 'z', 4, 5, 6]
>>>
5. 排序List中的元素
1)使用sort()函式對List進行排序
PS:最好List中元素是同一種類型,預設從小到達進行排序
>>>listDemo1 = [1, 3, 2, 5, 4]
>>>print (listDemo1)
>>>[1, 3, 2, 5, 4]
>>>
>>>listDemo1.sort()
>>>
>>>print (listDemo1)
>>>[1, 2, 3, 4, 5]
>>>
--------該水平線以上對List的操作是會真正改變到List的操作,如下操作不會改變到原有List,至於為什麼以後學到再寫吧 --------
6. 查詢List中的元素
1)迴圈遍歷連結串列所有元素(當然也可以直接列印單個元素下標的方法)
>>>print (listDemo5)
>>>[1, 2, 3, 4, 5]
>>>
>>>for val in listDemo5:
print (val, end = ' ') #print函式預設會自己換行,這樣只是不讓他換行而已,重點在輸出內容
>>>1 2 3 4 5
>>>
>>>for i in range(len(listDemo5)) #i = [ 0, len(listDemo5) )
print (listDemo5[i], end = ' ')
>>>1 2 3 4 5
>>>
2)其他相關查詢操作可以參考文章中對bisect模組的說明
7. 對List的其他相關操作
1)List間的 + 和 * 操作( * 操作可以看作是好幾個 + 操作)
PS:按照自己練習的情況來看能用append()函式操作和+操作達到同樣效果的時候,儘量使用append()函式,大批量操作的 時候尤其明顯(書上是說+是建立一個新的連結串列,append是新增,可能也就是因為這個原因)
>>>listDemo1 = [1, 2, 3]
>>>listDemo2 = ['a', 'b', 'c']
>>>listDemo3 = listDemo1 + listDemo2
>>>print(listDemo3)
>>>[1, 2, 3, 'a', 'b', 'c']
>>>
>>>[1, 2] * 3 #可以看成[1, 2] + [1, 2] + [1, 2]
>>>[1, 2, 1, 2, 1, 2]
>>>
2)List的切片相關操作(就是你在之前幾個操作中看不懂的那個符號:))
先簡單歸納一下,再看具體操作結果: List(a:b:c): a代表起始位置(省略代表從頭開始),b代表結束位置(省略代表到List結尾)(一般操作的時候會包含起始位 置,不包含結束位置,具體理解可以結合實際操作), c表示步長即從a到b每個c-1個單位算一個元素(省略代表步長為 1)(具體理解看操作結果)
>>>listDemo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>listDemo[1:5]
>>>[1, 2, 3, 4]
>>>
>>>listDemo[1:5:2]
>>>[1, 3]
>>>
>>>listDemo[ : 5]
>>>[0, 1, 2, 3, 4]
>>>
>>>listDemo[ :5:2]
>>>[0, 2, 4]
>>>
>>>listDemo[5: ]
>>>[5, 6, 7, 8, 9]
>>>
>>>listDemo[5::2]
>>>[5, 7, 9]
>>>
>>>listDemo[:]
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
3)對List使用SUM()函式對元素進行求和(PS:最好都是數字)
>>>print (listDemo5)
>>>[1, 2, 3, 4, 5]
>>>
>>>sum(listDemo5)
>>>15
>>>
4)部分字串和列表之間的相互轉換
#字串轉換成列表
>>>strDemo = "exchange"
>>>listDemo = list(strDemo)
>>>print (listDemo)
>>>['e', 'x', 'c', 'h', 'a', 'n', 'g', 'e']
>>>
>>>'1,2,3'.split(',')
>>>['1', '2', '3']
>>>
>>>'1,2,,3,'.split(',')
>>>['1', '2', '', '3', '']
>>>
>>> ' 1 2 3 '.split()
>>>['1', '2', '3']
>>>
#列表轉換成字串
>>>listDemo = ['a', 'b', 'c', 'h']
>>>delimiter = '+'
>>>delimiter.join(listDemo)
>>>'a+b+c+h'
>>>
8. List的其他相關注意事項
1) 話不多說直接程式碼更直觀,應該都能理解吧
#is 指的是兩個變數是否是指向同一片記憶體空間,如果是指向同一片記憶體空間,那一個被改變了另一個肯定也會跟著被改變
>>>str1 = "abcdef"
>>>str2 = "abcdef"
>>>str1 is str2
>>>True
>>>
>>>list1 = ['1', '2', '3']
>>>list2 = ['1', '2', '3']
>>>list1 is list2
>>>False
>>>
>>>list3 = ['1', '2', '3']
>>>list4 = list3
>>>list4 is list3
>>>True
>>>