Python中有四種內建的數據結構,即列表、元組、字典、集合。其中字典和集合我會以后再寫,現在先說列表和元組,它們兩個和以前提到很多次的字符串,
其實都屬於——序列。
一、列表(list):
1. list 是處理一組有序項目的數據結構,即你可以在一個列表中存儲一個序列的項目。
列表中的項目應該包括在方括號中,這樣Python 就知道你是在指明一個列表。一旦你創建了一個列表,你可以添加、刪除或是搜索列表中的項目。由於你可以
增加或刪除項目,我們說列表是可變的數據類型,即這種類型是可以被改變的。
列表根據列表中的元素可以簡單地分為三類:普通(同一數據類型)、混合(混合數據類型)、空列表。
列表一些很常用的內置方法:append() , extend() , insert() , remove() , del , pop() , count() , index() , reverse() , sort()等等。這些內置方法的參數和
用法都很簡單,只需說明一個,sort 函數:sort([*, key=None, reverse=None]),注意,在Python3中,第一個參數為不可變(排序的算法默認為歸並排序), 無法傳入其他的實參,第二個參數代表參加排序的關鍵字,可以采用lambda函數:
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
第三個參數reverse有兩個值可選,默認False為從小到大排序,設為True為從大到小排序。三個參數都是可選的。
2. 很多操作符也可以用於列表,如比較操作符,邏輯操作符(and or not),‘+’拼接操作符(只能用於列表間的拼接不能用於添加元素相當於extend),’*‘重復操作符,
成員關系操作符(in/not in)。注意操作符的用法和運算規則。
3. 列表同樣可以采用切片(slice)操作,用法規則幾乎和字符串的完全相同。
4.
注意,y = x[:] 通過切片操作將列表x的元素全部拷貝給y,如果簡單的把x賦值給y:y = x,y和x還是指向同一個列表,並沒有產生新的副本。注意理解教學視頻
里的一句話:Python里的變量名其實就相當於貼標簽。
二、元組(tuple):
1. 元組用來將多樣的對象集合到一起。元組和列表十分類似,只不過元組和字符串一樣是不可變的,即你不能修改元組。
元組通過圓括號中用逗號分割的項目定義。
元組通常用在使語句或用戶定義的函數能夠安全地采用一組值的時候,即被使用的元組的值不會改變。
2.
注意,在元組最關鍵的其實不是圓括號,而是’ ,‘號。特別的,如果Python中只有一個元素,一定要寫成(a,),記住下面兩個例子:
a = (3), type(a) = int ; b = 3, 4, 5 type(b) = tuple。可以看出元組中逗號是關鍵,甚至可以不要括號,事實上確實不是必須的。
3. 對於上文提到的可以作用於列表的操作符同樣可以作用於元組。
4. 因為元組是不可變的,但是如果你確實需要”改變“元組的元素,可以考慮采用拼接的方法,如:
>>> L = ('I','love','you')
>>> L = L[:1] + ('really',) +L[1:]
>>> L
('I', 'really', 'love', 'you')
注意,這里的實質並不是”改變“元組,元組本身是不可變的毫無疑問。這里的實質只是通過拼接構造了一個新的元組,然后把 ‘L’ 這個標簽貼到了新的元組上面,
舊的元組依然存在,且保持不變。(當然適當的時機Python的垃圾回收機制會回收掉它)
三、字符串(string):
1. 這里重提字符串主要是作為序列,了解它的一些奇葩的內置方法。



2. 這里必須要說的兩個最常用的字符串的內置方法:
(1). join(sub),以字符串作為分隔符,插入參數sub字符串中所有的字符中間。
(2). format():其實就相當於C語言中的格式化輸出。參數有兩種,一種是位置參數,一種是關鍵字參數。
其余的格式化符號與C語言中大同小異,如下圖:


注:格式化輸出這一部分東西不少,但實際應用到的不多。
四、序列(serial):
1. 序列是字符串,元組,列表的統稱。序列有以下特點:
---都可以通過索引得到每一個元素
---默認索引值總是從零開始
---可以通過切片的方法得到一個范圍內的元素的集合
---有很多共同的操作符(重復操作符、拼接操作符、成員關系操作符)
2. Python針對序列有非常多的內置函數:
list(), tuple(), str(), len(), max(), min(), sum(), sorted(), reversed(),enumerate(), zip()等等。
注:在Python 中 sorted 是內置函數(BIF), 而 sort() 是列表類型的內置方法(函數) list.sort()。
前者可以作用於序列的任意一種類型,甚至是字典排序,后者只能對列表類型排序。