引言
這篇文章介紹python中的三種組合資料類型,文章後半段會介紹如何在這些組合資料類型中使用"分區"取出資料。
文章目錄
0×1.元組
在python中,元組使用中括弧來建立,如果括弧中僅包含一個元素,需要在元素末尾添加一個逗號(不添加逗號資料會被建立成字串或數值資料類型),元組在建立後,不能添加刪除其中的元素,其值是固定不變的,請看下面的執行個體:
#建立三個元組,b元組僅包含一個字串元素,所以末尾需要添加一個逗號,否則b將被建立為字串對象,c元組是一個多維元組,包含了a和b元組
>>> a=(1,2,3,4,5)
>>> b=("www.qingsword.com",)
>>> c=(a,b)
#分別列印出三個元組中的元素
>>> print(a)
(1, 2, 3, 4, 5)
>>> print(b)
('www.qingsword.com',)
>>> print(c)
((1, 2, 3, 4, 5), ('www.qingsword.com',))
#列印出a元組第一個元素,python的索引起始是從0開始的
>>> print(a[0])
1
#列印出a元組中最後一個元素,len()函數將得到a元組元素的個數,因為索引是從0開始的,所以元素個數減一,就是最後一個元素的索引號
>>> print(a[len(a)-1])
5
#另一種簡便的擷取元組中最後一個元素的方法,直接使用-1,以此類推,擷取倒數第二個元素就使用-2作為索引值
>>> print(a[-1])
5
>>> print(a[-2])
4
#擷取多維元組中,第0個元素(a元組)中索引位置為2的值,也就是a子元組中的3了
>>> print(c[0][2])
3
0×2.列表
python中,可以使用中括弧建立列表,在上面的元組執行個體中的大部分操作都適用於列表,只需要將圓括弧替換成中括弧即可,不同點是,列表中僅包含一個元素時,不需要在末尾添加逗號,另外,列表可以添加或刪除元素,請看下面的執行個體:
#建立三個列表,其中c為多維列表,包含a和b
>>> a=[1,2,3,4,5]
>>> b=["www.qingsword.com"]
>>> c=[a,b]
#列印出三個列表中的元素
>>> print(a)
[1, 2, 3, 4, 5]
>>> print(b)
['www.qingsword.com']
>>> print(c)
[[1, 2, 3, 4, 5], ['www.qingsword.com']]
#使用list.append()方法,給a列表添加一個元素6
>>> a.append(6)
>>> print(a)
[1, 2, 3, 4, 5, 6]
#append()方法一次只能添加單個元素,而list.extend()方法一次可以添加多個元素
>>> a.extend([7,8,9])
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
#利用extend()方法的特性,可以將一個列表中的元素完全複製給另外一個列表,下面建立了一個空列表d,然後將c列表中的元素複製給d
>>> d=[]
>>> d.extend(c)
>>> print(d)
[[1, 2, 3, 4, 5, 6, 7, 8, 9], ['www.qingsword.com']]
#使用list.remove()方法可以刪除列表中的元素,這個方法接收的不是索引值,而是元素值(本例直接刪除了a列表中的元素1和2)
>>> a.remove(1)
>>> a.remove(2)
>>> print(a)
[3, 4, 5, 6, 7, 8, 9]
#list.pop()方法接收一個索引值,如果不指定索引值則預設為最後一位元素的索引值,這個方法將取出對應元素,然後從列表中刪除這個元素
>>> print(a.pop())
9
>>> print(a)
[3, 4, 5, 6, 7, 8]
>>> print(a.pop(0))
3
>>> print(a)
[4, 5, 6, 7, 8]
#使用set()能夠刪除列表中的重複值
>>> e=["a","a","b","c","b"]
>>> print(e)
['a', 'a', 'b', 'c', 'b']
>>> e=set(e)
>>> print(e)
{'a', 'b', 'c'}
0×3.字典
python中,使用大括弧能夠建立字典,字典中每個元素都是以"索引值對"的形式儲存的,請看下面的執行個體:
#有兩種方法可以建立字典,第一種直接建立一個空的字典,然後逐個添加索引值
>>> a={}
>>> a["早餐"]="牛奶雞蛋"
>>> a["午餐"]="可樂牛排"
>>> a["晚餐"]="水果沙拉"
>>> print(a)
{'早餐': '牛奶雞蛋', '晚餐': '水果沙拉', '午餐': '可樂牛排'}
#第二種方法建立字典,一次性添加所有的索引值,用冒號分隔每一組元素,冒號前為"鍵",冒號後為"值""
>>> a={'早餐': '牛奶雞蛋', '晚餐': '水果沙拉', '午餐': '可樂牛排'}
#python允許不同的鍵擁有相同的值,所以下面的文法是正確的
b={"one":"qing","two":"qing"}
#有兩種方法可以讀取字典中的值,直接使用"字典[鍵]"來讀取值,或使用"字典.get(鍵)"來讀取值
>>> print(a["早餐"])
牛奶雞蛋
>>> print(a.get("午餐"))
可樂牛排
#讀取字典keys和values列表
>>> print(a.keys())
dict_keys(['早餐', '晚餐', '午餐'])
>>> print(a.values())
dict_values(['牛奶雞蛋', '水果沙拉', '可樂牛排'])
0×4.資料分區執行個體
在python中能夠通過資料分區,實現讀取某段字串中單個字元的目的,這種思想同樣適用於元組和列表,如果列表中儲存的為字串,就可以通過分區技術取出某個元素的第幾個字元,這種方法在某些環境中會非常實用,請看下面的執行個體:
#首先來看python對字串資料的分區提取方法,本例取出a指向的字串資料中,索引位置為2的單個字元
>>> a="abcdefg"
>>> print(a[2])
c
#在列表資料中,可以將每個字串元素看做一個子列表,使用多維列表的思想,提取子列表中對應索引位置的值
>>> b=["www.qingsword.com","abcdefg","12345678"]
>>> print(b[0][4])
q
#提取b中索引位置為2的元素的最後一位字元
>>> print(b[2][-1])
8
使用字串分區技術,將一組列表中的每個元素的首字母提取出來作為字典的鍵,並對應這個元素的值,下面是一段比較完整的程式:
#!/usr/bin/env python3
#建立一個名稱列表
a=["Qingsword","John","Tom","George","Kali","Eva"]
x=0
#建立一個空字典
b={}
#當x值小於a列表元素個數時迴圈
while x<len(a):
b[a[x][0]]=a[x]
x+=1
print(b)
#程式輸出
{'E': 'Eva', 'G': 'George', 'Q': 'Qingsword', 'K': 'Kali', 'J': 'John', 'T': 'Tom'}
除了上面介紹的簡單切片技術外,python還提供了一種特殊的切片技術,分號切片,請看下面的執行個體:
#分號切片同樣適用於字串或元組列表,文法為"[起始索引:結束索引(不包含)]"
#從字串a索引為2(3)的位置開始切片,直到索引6(7)的位置,截取這其中的資料輸出(包含起始索引值,不包含結束索引值)
>>> a="123456789"
>>> print(a[2:6])
3456
#從b中索引為3(d)的位置開始,直到索引為5(f)的位置
>>> b=["a","b","c","d","e","f","g"]
>>> print(b[3:5])
['d', 'e']