除前面章節介紹的增長元素、刪除元素、修改元素方法以外,列表還包含了一些經常使用的方法。
例如,在交互式解釋器中輸入 dir(list) 便可看到列表包含的全部方法,以下所示:python
>>> dir(list) ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>>
在上面輸出結果中己經剔除了那些以雙下畫線開頭的方法。按照約定,這些方法都具備特殊的意義,不但願被用戶直接調用。
上面有些方法前面己經介紹過了,接下來給你們介紹另外的一些經常使用方法。編程
此方法用於統計列表中某個元素出現的次數,其基本語法格式爲:數據結構
listname.count(obj)app
其中,listname 表明列表名,obj 表示判斷是否存在的元素。
下面代碼示範了 count() 方法的用法:編程語言
a_list = [2, 30, 'a', [5, 30], 30] # 計算列表中30的出現次數 print(a_list.count(30)) # 計算列表中[5, 30]的出現次數 print(a_list.count([5, 30]))
運行結果爲:函數
2 1
index() 方法用於定位某個元素在列表中出現的位置(也就是索引),若是該元素沒有出現,則會引起 ValueError 錯誤。
此方法的基本語法格式爲:編碼
listname.index(obj,start,end)spa
同 count() 方法不一樣,index() 方法還可傳入 start、end 參數,用於在列表的指定範圍內搜索元素。
以下代碼示範了 index() 方法的用法:.net
a_list = [2, 30, 'a', 'b', 'crazyit', 30] # 定位元素30的出現位置 print(a_list.index(30)) # 從索引2處開始、定位元素30的出現位置 print(a_list.index(30, 2)) # 從索引2處到索引4處之間定位元素30的出現位置,由於找不到該元素,會引起 ValueError 錯誤 print(a_list.index(30, 2, 4))
運行結果爲:code
1 5 Traceback (most recent call last): File "C:\Users\mengma\Desktop\1.py", line 7, in <module> print(a_list.index(30, 2, 4)) # ValueError ValueError: 30 is not in list
pop() 方法會移除列表中指定索引處的元素,並返回該元素,若是不指定索引,默認會移除列表中最後一個元素。該方法的基本語法格式爲:
listname.pop(index)
例如:
a_list=[1, 2, 3, 9, 'hello'] # 移除列表的元素 3 print(a_list.pop()) print(a_list) # 移除列表中索引爲 0 的元素1 print(a_list.pop(0)) print(a_list) # 變量x01獲取移除的元素 x01 = a_list.pop(1) print(a_list)
運行結果爲:
hello [1, 2, 3, 9] 1 [2, 3, 9] [2, 9]
注意,使用 pop() 方法能夠實現一種常見的數據結構——棧。棧是一種特殊的數據結構,它可實現先入後出(FILO)功能,即先加入棧的元素,反然後出棧。
在其餘編程語言所實現的「棧」中,每每會提供一個 push() 方法,用於實現入棧操做,但 Python 的列表並無提供 push() 方法,咱們可使用 append() 方法來代替 push() 方法實現入棧操做。
下面代碼示範了使用列表做爲「棧」的示例:
stack = [] # 向棧中「入棧」3個元素 stack.append("fkit") stack.append("crazyit") stack.append("Charlie") print(stack) # ['fkit', 'crazyit', 'Charlie'] # 第一次出棧:最後入棧的元素被移出棧 print(stack.pop()) print(stack) # ['fkit', 'crazyit'] # 再次出棧 print(stack.pop()) print(stack) # ['fkit']
運行結果爲:
['fkit', 'crazyit', 'Charlie'] Charlie ['fkit', 'crazyit'] crazyit ['fkit']
上面程序中,第 8 行實現了第一次出棧操做,該操做將會把最後一次添加的元素移出棧,且該方法會返回出棧的元素。所以,執行這行代碼將會看到輸出 Charlie。
與全部編程語言相似的是,出棧操做既會移出列表的最後一個元素,也會返回被移出的元素。
reverse() 方法會將列表中全部元素反向存放。該方法的基本語法格式爲:
listname.reverse()
例如:
a_list = list(range(1, 8)) # 將a_list列表元素反轉 a_list.reverse() print(a_list)
運行結果爲:
[7, 6, 5, 4, 3, 2, 1]
從上面的運行結果能夠看出,調用 reverse() 方法將反轉列表中的全部元素。
sort() 方法用於對列表元素進行排序,排序後原列表中的元素順序會方發生改變。sort() 方法的語法格式以下:
listname.sort(key=None, reserse=False)
能夠看到,和其餘方法不一樣,此方法中多了 2 個參數,它們的做用分別是:
例如以下代碼:
a_list = [3, 4, -2, -30, 14, 9.3, 3.4] # 對列表元素排序 a_list.sort() print(a_list) b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 對列表元素排序:默認按字符串包含的字符的編碼大小比較 b_list.sort() print(b_list) # ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
運行結果爲:
[-30, -2, 3, 3.4, 4, 9.3, 14] ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']
以下代碼示範了 key 和 reverse 參數的用法:
b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] # 指定key爲len,指定使用len函數對集合元素生成比較的鍵,也就是按字符串的長度比較大小 b_list.sort(key=len) print(b_list) # 指定反向排序 b_list.sort(key=len, reverse=True) print(b_list)
運行結果爲:
['Go', 'Ruby', 'Swift', 'Python', 'Kotlin', 'Erlang'] ['Python', 'Kotlin', 'Erlang', 'Swift', 'Ruby', 'Go']
上面兩次排序時都將 key 參數指定爲 len,這意味着程序將會使用 len() 函數對集合元素生成比較大小的鍵,即根據集合元素的字符串長度比較大小。
注意,採用 sort() 方法對列表進行排序時,對中文支持很差,其排序結果與經常使用的音序排序法或者筆畫排序法都不一致,所以,若是須要實現對中文內容的列表排序,還須要從新編寫相應的方法進行處理,而不能直接使用 sort() 方法。
除此以外,須要指出的是,在 Python 2.x 中,列表的 sort() 方法還可傳入一個比較大小的函數,該函數負責比較列表元素的大小。該函數包含兩個參數,當該函數返回正整數時,表明該函數的第一個參數大於第二個參數;當該函數返回負整數時,表明該函數的第一個參數小於第二個參數;返回 0,則意味着兩個參數相等。