天天看點

Python内置序列之清單、元組、字元串、集合以及字典

Python中共有68種内置序列(有些内置函數也能傳回一些特殊序列,可以對它進行一些通用的序列操作),其中有三種比較常見:清單,元組,字元串

  • Python中大部分序列都可以進行通用操作,包括索引,切片,相同類型序列相加,乘法,成員資格,長度,最大值,最小值。
  • 清單可以根據索引下标來擷取元素的值

1、python檔案開頭utf-8格式的了解

2、程式中讀取檔案時utf-8格式的了解

aa.py檔案代碼示例:

#!/usr/bin/python
# -*- coding:utf-8 -*-

fr1 = open("goods_information", "r", encoding="utf-8")
print(fr1.read())
           
  • 其中# – coding:utf-8 --代表Python解釋器對本檔案的解碼格式,fr1 =open(“goods_information”, “r”,encoding=”utf-8”)中的utf-8代表讀取檔案進行解析時的解碼格式。

即:

第二行代碼中的utf-8代表對本檔案aa.py的解碼格式,第4行中的utf-8代表對讀取檔案goods_information的解碼格式。

索引使用的文法:變量後面加中括号,在中括号中輸入所需元素的編号

索引可以從左往右,也可以從右往左

切片操作下:

  • 清單的輸出元素用中括号括起來
  • 元組的輸出元素用小括号括起來
  • 字元串不用括起來
Python内置序列之清單、元組、字元串、集合以及字典
  1. 切片操作需要提供兩個索引作為邊界,第一個索引包含在切片内部,第二個索引不包含在切片内部
  2. 切片中,序列的索引下标可以超出其真實的索引長度
  3. 所有的序列的切片都有個預設的"a"和"b",即為第一個參數和第二個參數,其中a的預設值是0,b的預設值是到該序列的最後
  4. 如果切片的兩個索引都設定為空,則可以擷取整個序列
  5. 切片操作中,可以通過使用第三個參數: 步長 預設情況下為1,寫在兩個索引參數之後(步長不支援0,否則會報錯但步長支援負數)
  6. 正數的步長開始點必須小于結束點,負數的步長開始點必須大于結束點

序列相加

  1. 序列和序列之間通過加号連接配接連接配接後的結果還是相同類型的序列,清單和清單連接配接的結果仍然是清單,字元串和字元串連接配接的結果仍然是字元串。
  2. 不同類型的序列是不能做連接配接的,Python解釋器隻能在相同的序列之間做連接配接操作
  3. 成員資格指判斷一個元素是否包含在序列中Python中使用運算符 in 來判斷
  4. in 運算符會判斷左邊的元素是否報告在右邊的序列中,如果包含就會傳回True(真),否則就會傳回False(假)
  5. 判斷字元串序列是否包含某元素,則該元素必須是字元串
  6. len函數可以擷取序列的長度
  7. min函數可以擷取序列的最小值
  8. max函數可以擷取序列的最大值
  9. sum函數可以對序列求和,但是sum函數求和要求序列的元素必須全部都是 int

清單

  1. 一個清單是可以存儲不同類型的資料的,并且修改的新元素也不需要和原來的元素類型一緻。但是,更新清單的索引必須是已存在的索引,不能對超出清單長度的索引更新元素
  2. 可以使用append函數方法在清單的最後追加新元素,但append函數每次隻能新增一個元素,append無論後面是單個元素還是一個清單,都會把它當成一個新元素追加在原來的清單的後面,而extend函數則會展開,把新清單拆開追加在原來的清單後面
  3. insert函數需要兩個參數,第一個參數表示要插入的新元素的位置,第二個參數表示要插入的新元素。insert和append一樣,一次隻能新增一個元素

删除

  1. pop函數可以删除指定位置的元素,并且把這個元素作為傳回值傳回,如果不指定位置則預設删除最後一個元素
  2. remove函數可以根據内容來對元素進行删除,會删除查找到的第一個元素,并且沒有傳回值
  3. del關鍵字後是指定的清單元素和索引。del不僅可以删除清單的元素,還能删除其他元素

查找

  1. Python提供了index方法用于查找元素在清單中的位置,但是要注意,如果元素不在清單中,Python解釋器就會報錯。

隊列的其他操作

  1. reverse方法可以反轉隊列,和“[::-1]”有些類似,但是reverse方法修改的是原來的隊列,并且沒有傳回值
  2. count方法用于統計某個元素在清單中出現的次數
  3. sort方法用于對清單進行排序,還可以自定義排序方式。sort會修改并對原清單排序,沒有傳回值。

元組

  1. 元組與清單十分相似,大部分方法都通用,但是元組與清單的最大差別是清單可以修改、可以讀取、可以删除,而元組建立之後則不能修改,不能删除單個元素,但是可以删除整個元組。
  2. 如果元組隻有一個元素,則這個元素後面必須要有“ ,”,否則元素就還是其原來的類型。
  3. 由于元組不能修改,是以元組也不能單獨删除部分元素,要删除隻能删除整個元組
  4. 元組雖然不能修改,但是清單所支援的查詢方法基本上元組都支援。也正是因為元組不能被修改,是以元組的查詢速度要比清單更快
  5. 元組支援count操作,可統計某個元素在元組中出現的次數
  6. 元組支援index操作,可查找元素在元組中的索引位置

字典

  • 字典的元素是成對出現的,每個元素都是由 “ :”和鍵值對(“

    :”左邊的稱為鍵或者Key,右邊的稱為值或者Value)構成,元素和元素之間用“ ,”分隔,整個字典用花括号“ {}

    ”包圍。字典的鍵必須是唯一,不重複的,如果是空字典,則可以直接使用“ {} ”表示

    在Python中,字典其實就是一組鍵值對。字典元素都是成對出現的,每個元素必須要有鍵和對應的值。通路字典跟查字典一樣,需要用鍵去“

    查找”值。

  • 字典和清單一樣,都是一種可修改的結構。

修改

english = {
  			  "we":"我們",
 			   "world":"城市",
  			  "company":"公司",
  			  }
print(english)
english["world"] = "世界"
print(english)
删除
english = {
 		   "we":"我們",
 		   "world":"城市",
    "company":"公司",
    }
print(english)
english["world"] = "世界"
print(english)
del english["world"]
print(english)
           
  • clear可以用于清空字典的所有元素,使字典變成空字典,而不需要一個一個去删除。
  • copy方法可傳回一個具有相同鍵值對的新字典。使用copy對擷取到的字典做修改,原始的字典不受影響。如果字典的元素值也是字典,那麼copy隻會影響最外層字典,元素内部還是引用
  • fromkeys方法用于建立一個新字典,用序列中的元素作為字典的鍵,第二個參數作為所有參數對應的初始值
  • get方法傳回鍵對應的值,如果字典不存在對應的鍵則傳回預設值(None)
  • keys方法可以傳回一個清單,裡面包含了字典的所有鍵。keys方法常常用來判斷一個鍵是否存在于字典中,可以與“ in ”操作符組合使用
  • values方法用來傳回一個清單,裡面包含了字典的所有值

    items方法傳回一個清單,裡面包含了所有鍵的清單和所有值的清單(準确的說items傳回的并不是一個list類型,隻是類似)

集合(唯一性)

  1. 集合類似于清單,但集合不會包含重複的值
  2. 定義集合的時候注意:如果是空集合,必須用 set()定義;如果包含元素,可以使用花括号 {} 定義,也可以用set加上清單來定義
  3. 在集合中添加元素可以使用add方法
  4. 在集合中删除元素可以使用remove方法

Python支援三種推導式(解析式),分别對應清單,字典和集合。它能夠以非常自然,簡單的方式建構清單,字典或集合。

  • 清單推導式的文法:用中括号括起來,中間使用for語句,後面跟着if語句用作判讀,滿足條件的傳到for語句前面用作建構的清單
  • 字典推導式定義的時候是成對生成鍵值對
  • 集合推導式基本上和清單推導式沒有什麼不同,但是集合推導式會自動去除重複的元素,并且不使用中括号,使用花括号