一、列表(List)
List(列表) 是 Python 中最通用的序列。列表是一個任意類型對象位置的相關有序集合,它沒有固定大小。不像字符串,其大小是可以變的,通過對偏移量進行賦值以及其他各種列表的方法進行調用,可以修改列表大小。
索引是從0開始而非1開始!!
列表中值的分割用變量[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認“0”開始的,從右到左索引默認-1開始,下標可以為空表示取到頭或尾。可以對列表進行索引、切片等操作,看下面例子。
A=[1,'Hello RaQuant',3.14]
len(A)
3
print(A[-1])
3.14
A[0:-1]
[1, 'Hello RaQuant']
A+[2,3,"a"]
[1, 'Hello RaQuant', 3.14, 2, 3, 'a']
Python 的列表數據類型包含更多的方法。list.append(x) 把一個元素添加到列表的結尾。
list.append(x) 把一個元素添加到列表的結尾。
list.extend(L) 將一個給定列表中的所有元素都添加到另一個列表中。
list.insert(i, x) 在指定位置插入一個元素。第一個參數是準備插入到其前面的那個元素的索引,例如 a.insert(0, x) 會插入到整個列表之前,而 a.insert(len(a), x) 相當于 a.append(x)。
list.remove(x) 刪除列表中值為 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。
list.pop([i]) 從列表的指定位置刪除元素,并將其返回。如果沒有指定索引,a.pop() 返回最后一個元素。元素隨即從鏈表中被刪除。(方法中 i 兩邊的方括號表示這個參數是可選的,而不是要求你輸入一對方括號,這個經常會在 Python 庫參考手冊中遇到這樣的標記。)
list.index(x) 返回列表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤。
list.count(x) 返回 x 在鏈表中出現的次數。
list.sort(cmp=None, key=None, reverse=False) 對列表中的元素進行排序(參數可以用來自定義排序方法,參考 sorted() 的更詳細的解釋)。
list.reverse() 就地倒排鏈表中的元素
del list[i] 有個方法可以從列表中按給定的索引而不是值來刪除一個子項:del 語句。它不同于有返回值的 pop() 方法。語句 del 還可以從列表中刪除切片或清空整個列表(我們以前介紹過一個方法是將空列表賦值給列表的切片)
A.append(888)
A
[1, 'Hello RaQuant', 3.14, 888]
A.remove(888)
A
[1, 'Hello RaQuant', 3.14]
二、字典(dictionary)
序列(或者列表)是以連續的整數為索引,與此不同的是,字典以”關鍵字”為索引,關鍵字可以是任意不可變類型,通常用字符串或數值。如果元組中只包含字符串和數字,它可以作為關鍵字,如果它直接或間接地包含了可變對象,就不能當做關鍵字。不能用列表做關鍵字,因為列表可以用索引、切割或者 append() 和 extend() 等方法改變。
字典是無序的鍵:值對 (key:value 對)集合,鍵必須是互不相同的(在同一個字典之內)。使用大括號創建一個空的字典:{}。初始化列表時,在大括號內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。
字典的主要操作是依據鍵來存儲和取值。
D={"A":12,"B":23,"C":34}
D
{'A': 12, 'B': 23, 'C': 34}
D={}
D['A']=12
D['B']=23
D['C']=34
D
{'A': 12, 'B': 23, 'C': 34}
常用的字典操作方法:
D.clear()刪除字典內所有元素
D.copy()返回一個字典的復制
D.fromkeys(seq,val)創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
D.get(key, default=None)返回指定鍵的值,如果值不在字典中返回default值
D.has_key(key)如果鍵在字典dict里返回true,否則返回false
D.items()以列表返回可遍歷的(鍵, 值) 元組數組
D.keys()以列表返回一個字典所有的鍵
D.setdefault(key, default=None)和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default
D.update(dict2)把字典dict2的鍵/值對更新到dict里
D.values()以列表返回字典中的所有值
D.pop(key)刪除一個鍵并返回它的值,類似于列表的pop,只不過刪除的是一個鍵不是一個可選的位置
del D[key]刪除鍵
D[key] = 42新增或修改鍵
注意事項:
序列運算無效,字典元素間是沒有順序的概念
對新索引賦值會添加項
鍵不一定總是字符串
三、元組(Tuple)
元組在實際應用中不如前面兩種多,但左右一種重要的數據結構還是很有必要熟悉并掌握。
元組數據特點:
任意對象的有序集合 元組與字符串和列表類似,是一個位置有序的對象的集合(也就是其內容維持從左到右的順序)。與列表相同,可以嵌入到任何類別的對象中。
通過偏移存取 通過偏移而不是鍵來訪問,例如可以使用索引,切片
屬于不可變序列類型 不能在原處修改(因為他們是不可變的),但可以進行組合和復制,運算后會生成一個新的元組。
創建元組:
tup1=()
tup2=(520,)
tup3=(12,34)
tup=('a','b','c')
調用:
tup3[0]
12
修改元組:
元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如:
tup5=tup3+tup
tup5
(12, 34, 'a', 'b', 'c')
刪除元組:
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組
del tup2
Python 的元組數據類型包含更多的方法。
tup.index(x, [start, [stop]])) 返回元組中start到stop索引中第一個值為 x 的元素在整個列表中的索引。如果沒有匹配的元素就會返回一個錯誤。
tup.count(x) 返回 x 在元組中出現的次數。
cmp(tuple1, tuple2) 比較元組中兩個元素。
len(tuple) 計算元組元素個數。
max(tuple) 返回元組中元素最大值。
min(tuple) 返回元組中元素最小值。
tuple(seq) 將列表轉換為元組。
元組不提供字符串、列表和字典中的方法。如果相對元組排序,通常先得將它轉換為列表并使其成為一個可變對象,才能獲得使用排序方法,或使用sorted內置方法。
四、字符串
字符串可以用''或者""括起來表示。
如果字符串本身包含'怎么辦?比如我們要表示字符串 I'm OK ,這時,可以用" "括起來表示,同理,如果字符串包含",我們就可以用' '括起來表示:
"I'm OK"
'Learn "Python" in imooc'
如果字符串既包含'又包含"怎么辦?此時,就需要對字符串的某些特殊字符進行“轉義”,Python字符串用\進行轉義。要表示字符串 Bob said "I'm OK".由于 ‘ 和 ” 會引起歧義,因此,我們在它前面插入一個\表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為:
'Bob said \"I\'m OK\".'
注意:轉義字符 \ 不計入字符串的內容中。要計算str包含多少個字符,可以用len()函數:
>>> len('ABC')
3
>>> len('中文')
2
下面介紹一個使用頻率比較高的字符串處理功能:格式化。
我們經常會輸出類似'親愛的xxx你好!你xx月的話費是xx,余額是xx'之類的字符串,而xxx的內容都是根據變量變化的,所以,需要一種簡便的格式化字符串的方式。在Python中,用%來實現字符串的格式化,舉例如下:
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?占位符,后面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。如果你不太確定應該用什么,%s永遠起作用,它會把任何數據類型轉換為字符串:
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
有些時候,字符串里面的%是一個普通字符怎么辦?這個時候就需要轉義,用%%來表示一個%:
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴 r ,表示這是一個 raw 字符串,里面的字符就不需要轉義了。例如:
r'\(~_~)/ \(~_~)/'
但是r'...'表示法不能表示多行字符串,如果要表示多行字符串,可以用'''...'''表示:
'''Line 1
Line 2
Line 3'''
字符串可以用+號連接起來,用*號重復:
>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
''
>>>
字符串可以象在C 中那樣用下標索引,字符串的第一個字符下標為0,(注:這里用到了list列表切片處理):
>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'
>