Python 程式不求人系列 - 零章之參 - Python 物件型式
與其他程式語言相似,Python有規定的物件型式(Object type),如下整理
物件型式 範例
數值(Numbers) 4321、3.1415926、 3+4j(複數)、 Decimal()、 Fraction()
字串(String) 'spam'、 "Tom's"、b'a\x01c'
串列(Lists) [1,[2, 'three'],4.5]
字典Dictionaries {'food':'spam','taste':'yum'}
值組Tuples (1, 'spam', 4, 'U')、tuple('spam')
檔案Files open(r'c:\users\myaccount\desktop\test.csv','w')
集合Sets {'a','b','c'}
其他核心 布林值、None
程式單位 函式、模組、類別
數值範例
(圖十一)
如圖十一所示,python如同計算機,可以幫我們直接解決簡易數學問題。相加、相乘甚至 ** 代表的次方(連乘),可以得知2的64次方有多大,而2的4096次方為1234位數(字元)。也可使用內建數學模組 math,直接引出圓周率 PI 的數字,也可以用開根號運算。例如 PI 的開根號。亦可以使用 random 模組,來產生 0-1的隨機數字,或使用random內的choice方法,來選擇串列其中一個數值。
字元範例
(圖十二)
物件型式 範例
數值(Numbers) 4321、3.1415926、 3+4j(複數)、 Decimal()、 Fraction()
字串(String) 'spam'、 "Tom's"、b'a\x01c'
串列(Lists) [1,[2, 'three'],4.5]
字典Dictionaries {'food':'spam','taste':'yum'}
值組Tuples (1, 'spam', 4, 'U')、tuple('spam')
檔案Files open(r'c:\users\myaccount\desktop\test.csv','w')
集合Sets {'a','b','c'}
其他核心 布林值、None
程式單位 函式、模組、類別
數值範例
如圖十一所示,python如同計算機,可以幫我們直接解決簡易數學問題。相加、相乘甚至 ** 代表的次方(連乘),可以得知2的64次方有多大,而2的4096次方為1234位數(字元)。也可使用內建數學模組 math,直接引出圓周率 PI 的數字,也可以用開根號運算。例如 PI 的開根號。亦可以使用 random 模組,來產生 0-1的隨機數字,或使用random內的choice方法,來選擇串列其中一個數值。
字元範例
(圖十二)
我們可以指定一個字串變數 S 包含字串值 account,並利用len()方法計算字串長度。接著使用陣列方式來存取字串,從圖十二可以看到,存取陣列值方式,與其他程式語言稍有不同,但索引值的起始,一樣都是從 0 開始,故s[0]會輸出第一個字元‘a'。s[3]則輸入第4個字元'o',s[2:7]為從第3個字元開始到第8個字元'count'。字串變數可以增加字串在其前面或後面,來增加索引長度,但不可以變更已經設定的各索引內容(Immutability)。
(圖十三)
如圖十三,亦可將字串值轉換成串列陣列,分隔符號可用 join()方法來令 ';' 取代 ',' ,並可設定利用位元組陣列傳遞字串值,可用 extend()方法來擴充陣列值,並使用decode()方法來還原原始陣列值。
除此之外,還有一些字串處理的方法或函數可以使用,如圖十四
(圖十四)
s為 accounting 字串,利用find()方法搜尋cc位置在該字串的第1個索引,索引值如前段所提,為從0開始,如果想用其他字元取代原字串內的字元,可使用 replace()方法,如圖十四,將 cc 用 ooo來取代,並將字串值存回 變數 t,s的字元依然有不可消滅特性。接著有一個字串變數 line,利用split()方法將字串以, 為分割符號分割,使其變成一串列。還有uppper()方法可以提供將字串轉成全部大寫。而rstrip()方法則為去除每行後方的分行符號。
在python內可以做輸出格式化,格式化變數使用 % 開頭,結尾 f 為浮點數,d 為整數,如同C語言規則 .2f 為僅顯示小數點後2位數,+05d 為顯示正負號之5位數整數,變數值不到5位數則補0。
(圖十五)
若查詢字串可使用那些處理方法,可利用如圖十五的 dir()方法,來查詢處理字串 s 有哪些方法名稱,如 __add__為增加字串。若要詳細了解方法的用法,可以使用help()方法來查詢,如 help(s.split)可查詢 split()方法可以產生何種效果。如同 mac 下面的 man 查詢指令,可以知道詳細的用法。python內若要保留逸出字元與特殊字元,如 \n,\t,\o,'," "或是檔案所下的路徑,則可以使用3個"( """ )來宣告字串變數值,若要關閉處理逸出字元則可以使用開頭 r 來宣告字串變數值。如下
filepath = r'c:\users\myaccount\myfile'
除此之外,還可以利用正規表示(regular expression)
import re
re.match
串列範例
不同於陣列型態需固定每個元素的型別,python的List可以存放不同型別的物件,如圖十六
(圖十六)
宣告串列 l 包含三個物件分別為 [整數,字串,小數],利用 len類別得知串列長度為3,索引值1的串值為字串 accounting,串列亦可以使用 append()方法擴充內容,如圖十六為擴充一字串內容PI,而減少內容為使用 pop() 方法,如要將索引值1的物件抽走,則 l.pop(1)。串列的物件亦可以做排序的動作,如圖十七,如串列內物件皆為字串型態,可以使用 sort() 方法來按照字元順序排去,也可使用reverse()方法來反轉順序。
(圖十七)
串列也可以擴充成巢套串列,如同數學上的矩陣,如圖十八,有一個3x3的整數方陣,變數名稱為 m,可以看到對角線值為1、5、9,若要取出第二欄所有值,可以利用python內的特殊理解力
(圖十八)
若要快速取出值,亦可以在 [ ] 輸入類程式語法的方式(for),將同欄位的值(比如 row[1] 或是 該欄位可以整除2的值才列出來。除此之外也可以利用保留字語法,讓字元( c ) 可以同時成倍產生
(圖十九)
圖十九可以用 help來顯示 range 類別的用法 range(4)可產生0-3的四個整數數字,而 range(-10,10,2)則為從 -10 開始,每個數字差 2 ,產生10 個數字。我們也可以利用串列支援的類程式語法產生列總和,如圖十九最後三行,可以利用 map類別的 sum函數,取出 m 的總和值,並逐一轉換成 list,也可以利用字典(Dictionaries)方式來列出。在python中,串列物件、集合物件、字典物件與產生器物件,都可以用理解性質(comprehensions)方式來建立
(圖二十)
字典範例
字典通常是使用 鍵值 與 變數值的對應來表示,與串列一樣,是有可變性,可以根據需求來改變字典的長度與位置,他們比串列有更多助憶符號可以如資料庫一般的對應標籤與欄位值(key:value),如同在 JavaScript內的JSON格式。(https://jsoneditoronline.org/, https://www.json.org)
參考資料
http://terms.naer.edu.tw/ - 翻譯參考
未完待續......
留言
張貼留言