list
串列
串列
有順序、可重複、可瀏覽、可修改、可以有不同形態。
List的建立:使用中括號[ ]、或型態函數 list()。
Ex7-1.py
#放一群人的姓名,型態都是字串。
students = ['nick', 'albert', 'jie']
#放一群人的年齡,型態都是數字。
age = [12, 56, 40, 22, 59]
#某學生的資料與成績
nick_grade = [['nick', 'S9201201', [90, 72, 100], ]
albert_grade = [['albert', 'S9201202', [99, 68, 90], ]
#list中有list
grades = [nick_grade, albert_grade]
List方法
A = [1, 2, 'a', 'b']
新增、A.append('d')→[1, 2, 'a', 'b', 'd']
刪除、A.remove('a')→[1, 2, 'b']
修改、A[0] = 100→[100, 2, 'a', 'b']
A.sort(reverse=True)→['b', 'a', 2, 1]
查詢(擷取)、A[2]→'a'、A[1:]→ [2, 'a', 'b']
Method
c = student.count('nick') #符合的元素個數
idx = student.index('albert') #元素所處位置(從0開始)
List方法-新增list元素
append(e)
extend(list)
insert(i, e)
insert(i, list)
新增list元素
students = ['nick', 'albert', 'jie']
st = ['jason', 'allen']
students.append('lisa') #後加
students.extend(st) #擴充
students.insert(0, 'maggie') #插入位置0,原資料往後移
students.insert(1, st) #也可以插入list
刪除list元素
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]
修改元素
data[index] = new_value
透過 is 比較兩個 List 是否參考相同(指向相同記憶體)
透過 == 比較兩個 List 是否內容相同
grade = [11, 22, 99]
g = grade #相同參考
grade0 = grade.copy() #不同參考、相同值
grade[0] = 12
grade is grade0
List常用函數
len(List) #元素個數
max(List) #取得最大元素值
List2 = sorted(List1) #回傳排序後結果給List2,List1不變。
排序
data.sort() #遞增排序
data.sort(reverse=True) #遞減排序
sort() : 會改變List
sorted() : 回傳排序後List,原List不改變。
List of List:二維的List
Ex7-2.py
grade = [ [11,22,33], [44,55,66]
[77,88,99],[96,97,98] ]
grade[2] #[77,88,99]
grade[2][0] #77
for row in grade:
for element in row:
print(element,end=' ')
print()
List進階用法
a = [ i for i in range(0, 10, 2) ] # 產生 [0, 2, 4, 6, 8]
a = [ i for i in range(10) ] # 產生 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]