快速上手 Python 3 常用類型
- Build-in Type 內建類型
- Numeric 數值
- String 字串
- Container 容器
- Function 函式
- Name 名稱
Build-in Type 內建類型
本節講述如何在 Python 中呈現與處理您的資料格式。
最常應用的類型為數值 (Numeric)、字串 (String) 與容器 (Container)。
前兩者用於儲存您的資料;容器可以編排資料,以供檢索與比較。
數據處理上,使用名稱 (Name) 與運算子 (Operator) 可以達成單一數據的處理。
名稱可以在程式中代表數據的用途;運算子則是以簡單明瞭的形式做比較與運算。
內建類型可以透過如下方式將相近類型轉換,有類似函式的功能。
float(500) tuple([0, 1, 2])
另外,可以通過 type() 函式來檢查值的類型。
print(type(20)==int) #True
Python 中,數值和字串有以下特性:
- 是不會改變的,僅僅是作為數據的呈現。
- 相同的定值儲存在相同的記憶體位址。
Numeric 數值
數值可以透過算術運算子進行計算。
布林值 bool
作為定義某件事的正確性,關鍵字 True 和 False 可以直接代表一個布林值。
print(25 > 20) #True
另外 True 在數字運算中可以當成 1,False 可以當成 0。
整數 int
定義整數數字,例如重複次數、清單長度等等。
print(len([0, 1, 2, 3, 4])) #5
若兩整數進行運算時(除法必須可以整除),會優先使用整數類型回傳結果。
整數還有其他表示法:
- 二進位 b
- 八進位 o
- 十六進位 x
print(0b101) #5 print(0o20) #16 print(0x20) #32
即使使用其他種表示法,程式端還是以十進位為主,運算以二進位為主。
浮點數 float
定義小數數字,準確值可達 16 位數。
print(1/10) #0.1
在運算中可以混用整數來與浮點數做運算,但是注意不要把浮點數用在整數的需求上,即使它的尾數為 0。
透過兩種方法可以將浮點數轉換成整數:
- 使用 int 類型,會直接移除小數位。
- 使用 round() 函式,四捨五入到指定位數。
print(int(20.52)) #20 print(round(20.52)) #21 print(round(20.52, 1)) #20.5
浮點數還有其他種表示法:
- 科學記號 e
print(6.5e5) #650000.0
複數 complex
定義虛數,同時還有包含實數位。
print((20+6j)+(8-9j)) #(28-3j)
複數沒辦法直接以套用類型的方式轉回 float、int 類型,可以改用以下方式。
- 取出實部。
- 取出虛部。
- 計算絕對值。
print((4+3j).real) #4.0 print((4+3j).imag) #3.0 print(abs(4+3j)) #5.0
String 字串
字串用於儲存註記與符號,介於數值與容器之間,保有雙方某些特性。
字串可視為多個符號串連在一起的容器,可供檢索與比較。
但是事實上字串的「同一句話」是存於同個記憶體位址的,而且也只能「裝載」其他字串,這方面與數值無異。
使用兩個雙括弧 "
和 '
單括弧可以將符號包成字串,使用上沒有分別,不過建議包含空白的字串使用雙括弧。
使用 str() 類型函式可以將其他類型轉為字串。
字串有以下幾個常用操作,注意常用的操作都會回傳新的字串。
大小寫轉換 upper
lower
capitalize
- 全部小寫 upper
- 全部小寫 lower
- 字首大寫 capitalize
print("abc".upper()) #ABC print("ABC".lower()) #abc print("aBc".capitalize()) #Abc
結合與複製
使用一些易懂的運算子產生字串。
print("-"*7) #------- print('a' + 'b' + 'c') #abc
取代 replace
將指定的字元取代成輸入字元。
print("get changed".replace('ged', 'ce')) #get chance
分割 split
使用輸入字元分割成 list 類型。
print("a,b,c".split(',')) #['a', 'b', 'c']
格式操作 format
透過轉換的方式填入非字串物件,可以參考格式語法。
使用大括弧填入輸入的項目,若要使用大括弧符號,可以使用兩個代表({{}}
)。
print("{} %".format(50)) #50 %
使用冒號可以規定代數以及格式。
print("{percent:.02f} %".format(percent=50)) #50.00 %
在 Python 3.6 之後的版本可以簡化成這樣:
percent = 50 print(f"{percent:.02f} %") #50.00 %
使用 format() 比直接使用 + 運算子節省記憶體空間,因為不用儲存零碎的字串片段。
Container 容器
容器專門供應記憶體位址,可以將上面提供的兩大數據類型儲存到裡面,並且根據不同容器能做不同需求的操作。
清單 list
清單為有序動態容器,使用序號檢索與存取,直接寫法是使用中括弧 []
。
L = ['A', 'b', 2, 3] print(L[0]) #A
加入至清單可以使用三種方式:
- 加到尾部 append()
- 插入到指定位置 insert()
- 算術運算子 +、* 和指派運算子 +=
L = [8, 9] L.append(7) #L = [8, 9, 7] L.insert(1, 'b') #L = [8, 'b', 9, 7] L += [2, 5, 6] #L = [8, 'b', 9, 7, 2, 5, 6]
移除有三種方式:
- 移除尾部或指定序號並回傳 pop()
- 尋找並移除 remove()(若找不到會發出錯誤)
- 刪除關鍵字
del
L = ['a', 'b', 'c', 'd'] L.pop(1) #L = ['a', 'c', 'd'] L.remove('c') #L = ['a', 'd'] del L[-1] #L = ['a']
取得片段有序清單可以使用分割器 (Splitter),這個動作將會複製一部分的清單內容,使其變成片段的副本。
分割器與檢索符號類似,頭尾使用冒號 :
判斷。
L = ['a', 'b', 'c', 'd'] L1 = L[:2] #L1 = ['a', 'b'] L2 = L[:] print(L2 is L) #False
元組 tuple
元組為有序靜態容器,僅供於檢索,直接寫法是使用小括弧 ()
,只有一項時必須加上一個逗號 ,
。
T = ('A',) print(T[0]) #A
由於元組不可修改,因此結構會比 list 節省硬體資源。
另外元組也能夠使用算術運算子 +、* 和分割器。
字典 dict
字典為無序動態容器,使用鍵值 (Key value) 檢索與存取,直接寫法是使用大括弧 {}
,並且使用冒號 :
結合鍵值。
D = {'a':0, 'b':3, 'c':6} print(D['c']) #6
字典可以透過指派運算子 = 來增加新值,用刪除關鍵字 del
刪除一組鍵值。
D = {'a':0, 'b':1, 'c':2} D['d'] = 3 #D = {'a':0, 'b':1, 'c':2, 'd':3} del D['b'] #D = {'a':0, 'c':2, 'd':3}
可以用 keys()、values() 和 items() 方法來取得或轉換所有鍵值,不過取出來為記憶體位置的順序,可以使用 sorted() 函式排序。
D = {'a':0, 'b':1, 'c':2} K = list(D.keys()) #K = ['a', 'b', 'c'] V = list(D.values()) #V = [0, 1, 2] D = [(k, v) for k, v in D.items()] #D = [('a', 0), ('b', 1), ('c', 2)]
集合 set
集合為無序動態容器,無法檢索或是存取,但是不能包含重複項目,用於篩選內容。
集合的直接寫法是使用大括弧 {}
,但是空集合是寫作 set()
,以免認為是字典。
集合可以透過位元指派運算子操作:
S = {1, 2, 3} S |= {2, 3, 6} #S = {1, 2, 3, 6}
透過排序值將集合轉為 list。
S = {1, 4, 3} S = sorted(S) #S = [1, 3, 4]
Function 函式
一般的函式也是物件,可以被傳遞或是儲存至容器。
def plus(x, y): return x + y print(plus(10, 20)) #30
若是只做簡單的計算,也能使用 lambda 關鍵字建立函式物件。
plus = lambda x, y: x + y print(plus(10, 20)) #30
Name 名稱
名稱 (Name) 是 Python 中的專有名詞,可視為代名詞。
名稱相當於綽號,可以將數據取名字,以供 Python 檢索這個數據的記憶體位址。
透過指派運算子,可以將一個數據命上喜歡的名字。
命名之後,名稱可以代表數據進行運算。
a = 25 b = 20 c = a - b print(c) #5
命名規則如下:
- 區分大小寫。
- 不能包含空白。
- 不能包含運算子。
- 不能以數字為首。
- 不要與關鍵字衝突。
- 盡量避開內建類型函式的名稱。
若名稱想使用多個單字命名,以下的命名法都是正確的:
- CNC
- RedApple
- removedLists
- count_down
- part1
Python 中可以覆蓋指派過的名稱,被覆蓋的數據不會刪除。因此在覆蓋前若是想存取舊的數據,應該為它找一個新的名稱,或是放在可以檢索到的地方,例如容器中。
Comments
comments powered by Disqus