Python陣列 – (Python教學) Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用.
為何需要陣列
- 試想想如果要把每個的variable都declare一次, 如果有一百個, 就要輸入一百次, 加上其負帶的程式碼, 假設有十行, 就是要輸入1000行. 大量重覆的代碼使程式碼變得很長, 大大增加了Programmer輸入, 維護程式的時間.
- 而用Array就可以解決述的問題, Array的用處就是用一個variable儲存同類的值, 以避免用戶要大量輸入variable. 加上佩合for, foreach迴圈的使用, 大量減少了程式碼的輸入. 如果引用之前的例子, 運用Array, 只需把陣列宣告 一次, 之前說過的程式碼, 因為有用for迴圈的關係, 也只需要輸入一次, 能簡化至十行, 而加上if statement總共就是十一行, 大大簡化了程式碼. 這對輸入, 編碼, 及日後維護很有益處.
陣列在Python之應用例子
- 如做一些Automation 的工作, 當程式需要寄出E-mail時, 往往加至Email server的Queue中. 等到某個時候. 一批批地寄出 (Schedule). 這個時候. Array可以儲存寄出的相關信息, 包括時間, 電郵地址, 寄出是否成功. 若不成功, 是否交至下一個重寄, 或交至Fail的陣列中, 再入Database.
- 如做一些IOT Project, 想RFID或NFC作消費卡, 用戶想知道購買次數, 扣除金額, 但因為NFC, RFID卡是OffLine的, 所以可把這些信息存在卡中的Array中, 用讀取器取回資料.
- 如網頁資料爬取中, 我們是通常不會一個個網址地去爬, 而是一個Section或整個網頁一次過爬. 這時for loop就有用了, 我們通過得到頁中的URL, 加上Logic, 去判斷是否爬取 (如是否相同Domain name). 而記下URL常用的就是Array或List.
- 如用Barcode, Barcode內就可用Array存取相關資訊, 在App內便可加工地讀出來.
陣列應用一覽表
Python有8種最基本應用方法, 分別為 陣列初始化 , 陣列加入值 , 陣列插入值 , 陣列更新值 , 陣列刪除值 , 陣列抽取值 , 陣列排序 , 陣列切片Slicking , 陣列for迴圈 , 為最基礎, 最重要, 最常使用, 以下就作出介紹.
方法 | 例子: |
初始化 | lst = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’] print(lst) # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’] |
加入值 | lst = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’] lst.append(“Tim”); print(lst) # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Tim’] |
加入多個值1 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst2 = [‘Greenlands’, ‘Kingston’]; result = lst1 + lst2; print(result); # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Greenlands’, ‘Kingston’] |
加入多個值2 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst2 = [‘Greenlands’, ‘Kingston’] lst1.extend(lst2); print(lst1); # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Greenlands’, ‘Kingston’] |
插入值 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst2 = ‘Greenlands’ lst1.insert(1, lst2); print(lst1); # [‘John’, ‘Greenlands’, ‘Peter’, ‘Mary’, ‘Marks’] |
更新值 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst1[2] = ‘Greenlands’ print(lst1); # [‘John’, ‘Peter’, ‘Greenlands’, ‘Marks’] |
刪除值 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst2 = ‘Peter’ lst1.remove(lst2); print(lst1); # [‘John’, ‘Mary’, ‘Marks’] |
刪除值 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; del lst1[2] print(lst1); # [‘John’, ‘Mary’, ‘Marks’] |
清除所有值 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’]; lst1.clear() print(lst1); # [] |
切片 Slice 1 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[2:4]) # [‘Mary’, ‘Marks’] |
切片 Slice 2 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[:4]) # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’] |
切片 Slice 3 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[2:]) # [‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’] |
切片 Slice 4 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[-2:]) # [‘Groden’, ‘Guru’] |
切片 Slice 5 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[:-4]) # [‘John’, ‘Peter’, ‘Mary’] |
切片 Slice 6 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; print(lst1[:]) # [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’] |
排序 | lst1 = [‘John’, ‘Peter’, ‘Mary’, ‘Marks’, ‘Kim’, ‘Groden’, ‘Guru’]; lst1.sort() print(lst1) # [‘Groden’, ‘Guru’, ‘John’, ‘Kim’, ‘Marks’, ‘Mary’, ‘Peter’] |
for迴圈 | lst1 = [‘John’, ‘Peter’, ‘Mary’]; for x in lst1: print(x) # John # Peter # Mary |
(等如) | |
lst1 = [‘John’, ‘Peter’, ‘Mary’]; [print(x) for x in lst1] # John # Peter # Mary |