python基礎知識-列表
1 列表是什麼
列表是由一系列按特定順序排列的元素組成。可以包含字元,數字和字串,各元素之間沒有任何關係。一般情況,會給用於指向列表的變數命名為複數形式,如names。在python中,使用[]來表示列表,見一個簡單的示例:
names = ["zhan san","li si","wang er","ma zi"]#定義一個列表
print(names)
打印出來的結果為:
['zhan san', 'li si', 'wang er', 'ma zi']
2 訪問列表元素
列表是有序集合,要訪問列表中的任何一個元素,主要把整個元素在列表中的位置(索引)告訴python即可。要訪問列表元素,可指出列表的名稱,再指出元素的索引,並將其放在方括號內。
#定義一個列表
names = ["zhan san","li si","wang er","ma zi"]
#列印第二個元素
print(names[1])
#列印的結果:
li si
3 列表的索引
在python中,列表的索引從0開始,而不是從1開始。列表中的第一個元素的索引是0,而不是1。第二個元素的索引為1,根據這個簡單的計數方式,要訪問列表的任何元素,都可以將其順序減1的結果作為索引。例如,上面names這個列表,"ma zi"的索引為3,使用name[3]就可以提出"ma zi"。
#列印第四個元素
print(names[3])
#結果
ma zi
Python 為訪問最後一個列表元素提供了一種特殊語法。通過將索引指定為 -1 ,可讓 Python 返回最後一個列表元素:
#列印最後一個元素
print(names[-1])
#結果
ma zi
這種語法很有用,因為你經常需要在不知道列表長度的情況下訪問最後的元素。這種約定也適用於其他負數索引,例如,索引 -2 返回倒數第二個列表元素,索引 -3 返回倒數第三個列表元素,以此類推
4 使用列表中的各個值
可像使用其他變數一樣使用列表中的各個值。例如,你可以使用拼接根據列表中的值來建立訊息。
#定義一個列表 names = ["zhan san","li si","wang er","ma zi"] print("this is my frind,his name is " + names[0] + "!,nice to meet you!") #結果 this is my frind,his name is zhan san!,nice to meet you!
5 修改、新增和刪除元素
大多數列表都將是動態的,這意味著列表建立後,將隨著程式的執行增刪元素。例如我的friends列表,有一天其中一個朋友,他找你借錢,我借給了他,然後他不還我錢還拉黑了我,我的friends列表裡面就少了一個元素。再過一段時間,又有一個朋友找我借錢,我確實沒錢,自然沒有借給他,他覺得我夠朋友,酒吧我拉黑了,結果就是friends列表裡面又少了一個元素。一年後,老闆覺得我能力強,人品好,值得信賴,給我升值加薪,隨之我的社交圈子變大,朋友數量增加,我的friends列表長度就增加了。
5.1 修改列表元素
要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。比如說我朋友列表,麻子同志改跟岳父姓,成了張麻子,朋友列表就該如此變化。
friends = ["許三多","魏無忌","麻子","白樂天","劉夢禪","步驚雲","馬三寶"]
print(friends)
#結果
['許三多', '魏無忌', '麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
#修改“麻子”為“張麻子”
friends[2] = "張麻子"
print(friends)
#修改的結果
['許三多', '魏無忌', '張麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
根據需要,你可以修改任何列表元素的值,也可以修改多個元素的值。
5.2 在列表中新增元素
在實際中,我們可能出於各種各樣的原因需要增加列表中的元素,Python 提供了多種在既有列表中新增新資料的方式。
5.2.1 在列表末尾新增元素
列表中新增新元素時,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將新增到列表末尾。繼續使用friends列表做實驗。
friends = ['許三多', '魏無忌', '張麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
#增加一個元素
friends.append("張三丰")
print(friends)
#結果
['許三多', '魏無忌', '張麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶', '張三丰']
方法 append() 將元素“張三丰”加如到了friends列表的最後位置,而不影響列表中的其他所有元素屬性。方法 append() 讓動態地建立列表易如反掌,使用append()可以在一個列表中多次的追加元素。實際中,我們無法提前預知列表中要存放的資料,我們經常要等程式執行後,才知道使用者要在程式中儲存哪些資料。為控制使用者,可首先建立一個空列表,用於儲存使用者將要輸入的值,然後將使用者提供的每個新值附加到列表中。
schoolmate = []
#連續追加
schoolmate.append("盧雲")
schoolmate.append("朱顏")
schoolmate.append("谷運")
print(schoolmate)
#結果
['盧雲', '朱顏', '谷運']
5.2.2 在列表中插入元素
使用方法 insert() 可在列表的任何位置新增新元素,因為列表是有順序的,為此,你需要指定新元素的索引和值。還以schoolmate為例
#第二個位置增加一個元素
schoolmate.insert(1,"柳長卿")
print(schoolmate)
#結果
['盧雲', '柳長卿', '朱顏', '谷運']
在這個示例中,在第二個位置(索引為1),增加了一個元素。這種操作將列表中插入位置右邊每個元素都右移一個位置,索引增加1。
5.3 從列表中刪除元素
實際中,經常需要從列表中刪除一個或多個元素,例如我的friends列表,某些原因,導致無法維持關係,我需要將拉黑的人員從friends列表中刪除,可以通過指定位置(索引)或值來刪除列表中的元素。
5.3.1使用 del 語句刪除元素
如果知道要刪除的元素在列表中的位置,可使用 del 語句。
friends = ["許三多","魏無忌","麻子","白樂天","劉夢禪","步驚雲","馬三寶"]
print(friends)
#刪除指定位置的元素
del friends[0]
print(friends)
#結果
['魏無忌', '麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
示例中,刪除了第一個位置(索引0)的元素,完成後,元素長度減1,刪除位置右邊的元素索引隨之減1。使用 del 可刪除任何位置處的列表元素,條件是知道其索引,使用 del 語句將值從列表中刪除後,你就無法再訪問和使用它了。
5.3.2使用方法 pop() 刪除元素(彈出)
方法 pop() 可刪除列表指定位置的元素,並讓你能夠接著使用它。列表就像一個棧,而pop刪除列表指定位置的元素相當於彈出棧頂元素。有時候,你要將元素從列表中刪除,並接著使用它的值。比如我的schoolmate列表。
schoolmate = []
#連續追加
schoolmate.append("盧雲")
schoolmate.append("朱顏")
schoolmate.append("谷運")
print(schoolmate)
schoolmate.insert(1,"柳長卿")
print(schoolmate)
#刪除指定位置的元素
new_scmate = schoolmate.pop(1)
print(new_scmate)
print(schoolmate)
#結果
['盧雲', '朱顏', '谷運']
['盧雲', '柳長卿', '朱顏', '谷運']
柳長卿
['盧雲', '朱顏', '谷運']
使用 del 語句還是 pop() 方法的判斷方法:如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用 del 語句;如果你要在刪除元素後還能繼續使用它,就使用方法 pop() 。
5.3.3根據值刪除元素
有時候,我們並不一定知道要從列表中刪除的值所處的位置,但是我們可能知道要刪除的值。如果你只知道要刪除的元素的值,可使用方法 remove() 。加入我要刪除我的friends中的“步驚雲”。
friends = ["許三多","魏無忌","麻子","白樂天","劉夢禪","步驚雲","馬三寶"]
print(friends)
del friends[0]
print(friends)
#修改“麻子”為“張麻子”
friends[2] = "張麻子"
print(friends)
#增加一個元素
friends.append("張三丰")
print(friends)
#刪除一個指定值的元素
friends.remove("步驚雲")
print(friends)
#結果
['許三多', '魏無忌', '麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
['魏無忌', '麻子', '白樂天', '劉夢禪', '步驚雲', '馬三寶']
['魏無忌', '麻子', '張麻子', '劉夢禪', '步驚雲', '馬三寶']
['魏無忌', '麻子', '張麻子', '劉夢禪', '步驚雲', '馬三寶', '張三丰']
['魏無忌', '麻子', '張麻子', '劉夢禪', '馬三寶', '張三丰']
注意 :方法 remove() 只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用迴圈來判斷是否刪除了所有這樣的值。你將在第 7 章學習如何這樣做。
6 組織列表
實際中,在建立的列表中,元素的排列順序常常是無法預測的,因為我們並非總能控制使用者提供資料的順序,但是我們經常需要以特定的順序呈現資訊,所以,我們經常需要調整列表元素排列順序。 Python 提供了很多組織列表的方式,可根據具體情況選用。
6.1 方法 sort() 對列表進行永久性排序
方法 sort() 讓你能夠較為輕鬆地對列表進行排序。假設你有一個汽車列表,並要讓其中的汽車按字母順序排列。為簡化這項任務,我們假設該列表中的所有值都是小寫的。示例如下:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
#結果
['audi', 'bmw', 'subaru', 'toyota']
還可以按與字母順序相反的順序排列列表元素,為此,只需向 sort() 方法傳遞引數 reverse=True 。下面的示例將汽車列表按與字母順序相反的順序排列:
cars = ['bmw', 'audi', 'toyota', 'subaru']
#正序
cars.sort()
print(cars)
#反序
cars.sort(reverse = True)
print(cars)
#結果
['audi', 'bmw', 'subaru', 'toyota']
['toyota', 'subaru', 'bmw', 'audi']
6.2使用函式 sorted() 對列表進行臨時排序
要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函式 sorted() 。函式 sorted() 讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。
cars = ['bmw', 'audi', 'toyota', 'subaru']
#臨時排序
print("now,the list is :")
print(cars)
print("\nafter sorted(),the list is :")
print(sorted(cars))
print("\nthe really list is :" )
print(cars)
#結果
now,the list is :
['bmw', 'audi', 'toyota', 'subaru']
after sorted(),the list is :
['audi', 'bmw', 'subaru', 'toyota']
the really list is :
['bmw', 'audi', 'toyota', 'subaru']
我們首先按原始順序列印列表,再按字母順序顯示該列表。以特定順序顯示列表後,我們進行核實,確認列表元素的排列順序與以前相同。最後,呼叫函式 sorted() 後,列表元素的排列順序並沒有變。如果你要按與字母順序相反的順序顯示列表,也可向函式 sorted() 傳遞引數 reverse=True 。
6.3 倒序
要反轉列表元素的排列順序,可使用方法 reverse() 。還用cars列表演示
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars)
#結果
['subaru', 'toyota', 'audi', 'bmw']
注意, reverse() 不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排列順序。方法 reverse() 永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,為此只需對列表再次呼叫 reverse() 即可。
6.4列表的長度
使用函式len()可以獲取列表的長度,列表長度是從1開始計數,如cars列表,他的長度就是4.
cars = ['bmw', 'audi', 'toyota', 'subaru']
#獲取長度
print(len(cars))
#結果
4