Collection
集合物件
四大集合物件:list、tuple、set、dict
List串列
有順序、可重複、可瀏覽、可修改、可以有不同形態。
List的建立:使用中括號[ ]、或型態函數 list()。
一維
num = [1,2,3,4,5,6,7,8,9,10]
str = ['Tom','John','Mary']
ff = [88.8, 77.7, 66.6, 55.5]
mix = [1, 'Allen', 98.5]
List方法
A = [1, 2, 'a', 'b']
新增、A.append('d')→[1, 2, 'a', 'b', 'd']
刪除、A.remove('a')→[1, 2, 'b', 'd']
修改、A[0] = 100→[100, 2, 'b', 'd']
排序、A.sort(reverse=True)→['d', 'b', 100, 2] 遞減
查詢(擷取)、A[2]→100、A[1:]→ ['b', 100, 2]
student = ['Tom', 'nick', 'Emily', 'albert']
c = student.count('nick') #符合的元素個數,c=1
idx = student.index('albert') #元素所處位置(從0開始),idx=3
新增list元素
append(e)
extend(list)
insert(i, e)
insert(i, list)
範例:
students = ['nick', 'albert', 'jie']
st = ['jason', 'allen']
students.append('lisa') #後加
students.extend(st) #擴充
students.insert(0, 'maggie') #插入位置0,原資料往後移
students.insert(1, st) #也可以插入list
修改元素
data[index] = new_value
刪除
remove(e):移除第一個e,若沒有e則產生例外。
pop():回傳並移除最後一個。
pop(index):回傳並移除index的元素。
# 刪
students = ['nick', 'albert', 'jie']
students0 = students.copy()
students.remove('nick') # 移除第⼀個名為nick的元素
students = students0.copy()
st = students.pop() # 取出最後的元素
students = students0.copy()
st = students.pop(0) # 取出第⼀個元素
del students[0]
常用函數
len(List) #元素個數
max(List) #取得最大元素值
List2 = sorted(List1) #回傳排序後結果給List2,List1不變。
排序
data.sort() #遞增排序
data.sort(reverse=True) #遞減排序
sort() : 會改變List
sorted() : 回傳排序後List,原List不改變。
import random
random.shuffle(List) #隨機打亂
*一維串列:輸出串列每個元素,中間以空白隔開,且最後一個元素之後無空白。
A = [1, 2, 'a', 'b']
print(*A)
輸出
1 2 a b
二維
arr = [[1,2,3],[4,5,6],[7,8,9,10]]
走訪一、手動計算,容易遺漏或失誤。(此例會少一個10)
for i in range(3):
for j in range(3):
print(a[i][j],end=' ')
print()
輸出:
1 2 3
4 5 6
7 8 9
走訪二、計算長度,使用兩個索引,傳統方式。
for i in range(len(arr)):
b = arr[i]
for j in range(len(b)):
print(arr[i][j],end=' ')
print()
輸出:
1 2 3
4 5 6
7 8 9 10
走訪三、使用數列,方便性更高。
for i in arr:
for j in i:
print(j,end=' ')
print()
輸出:
1 2 3
4 5 6
7 8 9 10
走訪四、使用符號*、只需一層迴圈,極為便利。
*:讀取串列內的個別元素輸出,中間隔一個空白。
for i in arr:
print(*i)
輸出:每一列最後的數字後無空白
1 2 3
4 5 6
7 8 9 10