列表:
Python列表是可變的,這是它區別于字符串數組和元組的最重要的特點。列表可以修改,而字符串和元組不能。
?
以下是Python中列表的描述方法:
方法 | 描述 |
list.append(x) | 將元素添加到列表結尾 |
list.extend(L) | 通過添加指定列表的所有元素來擴充列表 |
list.insert(i,x) | 在指定位置插入一個元素,第一個參數是準備插入到其前面的那個元素的索引 |
list.remove(x) | 刪除列表中值為x的第一個元素,如果沒有這個元素會返回一個錯誤。 |
list.pop([i]) | 從列表的指定位置移除元素,并將其返回。如果沒有指定索引,a.pop()會返回最后一個元素。元素隨機從列表中被移除。 |
list.clear() | 移除列表中所有項 |
list.index(x) | 返回列表中第一個值為x元素的索引。如果沒有匹配的元素就返回一個錯誤。 |
list.count(x) | 返回x在列表中出現的次數 |
list.sort() | 對列表中的元素進行排序 |
list.reverse() | 倒排列表中的元素 |
list.copy() | 返回列表的淺復制 |
?
?
?
類似于insert、remove、sort等修改列表的方法是沒有返回值的。
將列表當作堆棧使用:
列表方法使得列表可以很方便的作為一個堆棧來說使用,堆棧作為特定的數據結構,最先進入的元素最后一個被釋放。用gappend()方法可以把一個元素添加到堆棧頂。用不指定索引的pop()方法可以把一個元素從堆棧頂釋放出來。
?
?
?
將列表當作隊列使用,只是在隊列里第一加入的元素第一個取出來,但是這樣拿列表用作這樣的目的效率不高。在列表的最后添加或彈出的元素速度快。然而在列表里插入或者從頭部彈出速度卻不快。(因為所有其他元素逗得一個一個移動)
?
?
?
列表推導式
列表推導式提供了從序列創建列表的簡單途徑。通常應用程序將一些操作應用于某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定判斷條件創建子序列。
每個列表推導式都在for之后跟一個表達式,然后有0到多個for或if子句,返回結構是一個根據表達從其后的for和if上下文環境中生成出來的列表。如果希望表達式推導出一個元組,就必須使用括號。
?
?
?
對序列中每個元素的逐一調用某方法
?
?
?
我們可以使用if子句作為過濾器
?
?
?
以下還有一些關于循環和其他技巧的演示:
?
?
?
列表推導式可以使用復雜表達式或嵌套函數
?
?
?
嵌套列表解析
Python的列表還可以嵌套
?
?
也可以使用以下方法實現:
?
?
del語句
使用del語句可以從一個列表中依索引而不是值來刪除一個元素。這與使用pop()返回一個值不同,可以用del語句從列表中刪除一個切割,或者情況整個列表
?
?
也可以使用del刪除實體變量
del a
?
元組和序列
元組是由 若干逗號跟個的值
?
?元組在輸出時總有括號的,以便于正確表達嵌套結構,在輸入時可能有或者沒有括號,不過括號通常是必須的(如果元組是更大的表達式的一部分)
?
集合
集合是一個無須不重復的集,基本功能包括關系測試和消除重復元素。
可以使用大括號{}創建集合。注意:如果要創建一個空集合,必須使用set()而不是{};后者創建一個空的字典。
?
?
集合也支持推導式:
字典
另一個非常常用的Python內建數據類型是字典。
序列是以連續的整數為索引,與此不同的是,字典以關鍵字為索引,關鍵字可以是任意不可變類型,通常用字符串或數值。
理解字典的最佳方式就是把它看作無序的鍵=>值對集合。同一個字典內,關鍵必須互不相同。
一堆大括號創建一個空的字典:{}
?
?
構造函數dict()直接從鍵值對元組列表中構建字典。如果有固定格式,列表推導式指定特定的鍵值對:
?
?
字典推到可以用來創建任意鍵和值的表達式詞典:
?
?如果關鍵字只是簡單的字符串,使用關鍵字參數指定鍵值對有時候會更方便:
?
?
遍歷技巧
在字典遍歷時,關鍵字和對應的值可以使用items()方法同時解讀出來:
?
?
在序列中遍歷時,索引位置和對應值可以使用enumerate()函數同時得到:
?
?
同時遍歷兩個或更多的序列,可以使用zip()組合:
?
?
要反向遍歷一個序列,首先指定這個序列,然后調用reversed()函數:
?
?
要按順序遍歷一個序列,使用sorted()函數返回一個已排序的序列,不修改原值:
?