標籤:

Python基本語法——列表、元組、字典、字元串

一、列表(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]=12D[B]=23D[C]=34D{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新增或修改鍵

注意事項:

  1. 序列運算無效,字典元素間是沒有順序的概念
  2. 對新索引賦值會添加項
  3. 鍵不一定總是字元串

三、元組(Tuple)

元組在實際應用中不如前面兩種多,但左右一種重要的數據結構還是很有必要熟悉並掌握。

元組數據特點:

  1. 任意對象的有序集合 元組與字元串和列表類似,是一個位置有序的對象的集合(也就是其內容維持從左到右的順序)。與列表相同,可以嵌入到任何類別的對象中。
  2. 通過偏移存取 通過偏移而不是鍵來訪問,例如可以使用索引,切片
  3. 屬於不可變序列類型 不能在原處修改(因為他們是不可變的),但可以進行組合和複製,運算後會生成一個新的元組。

創建元組:

tup1=()tup2=(520,)tup3=(12,34)tup=(a,b,c)

調用:

tup3[0]12

修改元組:

元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如:

tup5=tup3+tuptup5(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內置方法。

四、字元串

字元串可以用或者""括起來表示。

如果字元串本身包含怎麼辦?比如我們要表示字元串 Im OK ,這時,可以用" "括起來表示,同理,如果字元串包含",我們就可以用 括起來表示:

"Im OK"Learn "Python" in imooc

如果字元串既包含又包含"怎麼辦?此時,就需要對字元串的某些特殊字元進行「轉義」,Python字元串用進行轉義。要表示字元串 Bob said "Im OK".由於 『 和 」 會引起歧義,因此,我們在它前面插入一個表示這是一個普通字元,不代表字元串的起始,因此,這個字元串又可以表示為:

Bob said "Im OK".

注意:轉義字元 不計入字元串的內容中。要計算str包含多少個字元,可以用len()函數:

>>> len(ABC)3>>> len(中文)2

下面介紹一個使用頻率比較高的字元串處理功能:格式化。

我們經常會輸出類似親愛的xxx你好!你xx月的話費是xx,餘額是xx之類的字元串,而xxx的內容都是根據變數變化的,所以,需要一種簡便的格式化字元串的方式。在Python中,用%來實現字元串的格式化,舉例如下:

>>> Hello, %s % worldHello, 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 %% % 7growth rate: 7 %

如果一個字元串包含很多需要轉義的字元,對每一個字元都進行轉義會很麻煩。為了避免這種情況,我們可以在字元串前面加個前綴 r ,表示這是一個 raw 字元串,裡面的字元就不需要轉義了。例如:

r(~_~)/ (~_~)/

但是r...表示法不能表示多行字元串,如果要表示多行字元串,可以用...表示:

Line 1Line 2Line 3

字元串可以用+號連接起來,用*號重複:

>>> word = Help + A>>> wordHelpA>>> < + word*5 + ><HelpAHelpAHelpAHelpAHelpA>>>>

字元串可以象在C 中那樣用下標索引,字元串的第一個字元下標為0,(註:這裡用到了list列表切片處理):

>>> word[4]A>>> word[0:2]He>>> word[2:4]lp>>>

推薦閱讀:

python的list是數組的結構還是鏈表的結構?
Scala程序能不能像處理數據一樣,優雅地處理Scala代碼?
有一定的基礎,如何學python?
Urllib之Cookie的使用和Proxy(代理)設置
通俗 Python 設計模式——外觀模式

TAG:Python |