python學習筆記_第5天
阿新 • • 發佈:2021-01-15
列表物件的常用函式
- 列表元素訪問
- 通過索引直接訪問+切片
索引區間在[0, 列表長度-1]這範圍內,超過這個範圍則
會丟擲異常。
列表的索引直接訪問和切片都與字串操作類似,切片的格式如下:
[起始偏移量:終止偏移量[:步長]]
注:切片操作時,起始偏移量和終止偏移量不在[0,字串長度-1]這個範圍,也不會報錯。起始偏移量小於0 則會當做0,終止偏移量大於“長度-1”會被當成”長度-1”。
a = [1,2,3,4,5,6,7,8,9] a[2] # 3 a[:] # [1, 2, 3, 4, 5, 6, 7, 8, 9],提取整個列表 a[:2] # [1, 2],從頭到終止偏移量 a[3:] # [4, 5, 6, 7, 8, 9],從起始偏移量到結尾 a[-3:] # [7, 8, 9],從倒數第三個數到最後 a[-7:-3] # [3, 4, 5, 6] a[1:6:2] # [2, 4, 6],指定步長為2 a[-7:-3:2] # [3, 5] a[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1],從右到左反向提取
- index()方法
index()可以獲取指定元素首次出現的索引位置。語法index(value,[start,[end]]),其中start 和end 指定了搜尋的範圍。
a = [1,2,3,5,4,2,5,2,9]
a.index(2) # 1,2第一次出現在索引1處
a.index(2,2) # 5
a.index(2,2,7) # 5,包頭不包尾,從索引2到索引7(不包括7)之間,2第一次出現在索引5處
- 列表函式
- count()方法
返回指定元素在列表中出現的次數。
a = [1,2,3,5,4,2,5,2,9]
a.count(2) # 3
- len()方法
返回列表長度,即列表中包含元素的個數。
a = [1,2,3,5,4,2,5,2,9]
len(a) # 9
- in 方法
判斷列表中是否存在指定的元素,in 關鍵字來判斷,直接返回True或False。也可以用count(),但是in更簡潔。
a = [1,2,3,5,4,2,5,2,9]
4 in a # True
10 in a # False
a.count(4) >0 # True
a.count(10) >0 # False
- max(list) 和 min(list)
返回列表中最大和最小值 - sum(list)
對數值型列表的所有元素進行求和操作,對非數值型列表運算則會報錯。
a = [3,10,20,15,9] sum(a) # 57
- 列表排序
- list.sort()方法
修改原列表,不建新列表的排序。list.sort()預設升序,list.sort(reverse=True)也可降序排列。
random模組中shuffle()可實現順序的隨機打亂。
a = [20,10,30,40]
id(a) # 72571016
a.sort() # 預設升序排列
print(a) # [10, 20, 30, 40]
id(a) # 72571016
a.sort(reverse=True) # 降序排列
print(a) # [40, 30, 20, 10]
id(a) # 72571016
import random
random.shuffle(a) # 隨機打亂順序
print(a) # [30, 20, 10, 40]
- 內建函式sorted()
這個方法返回新列表,不對原列表做修改。
a = [20,10,30,40]
id(a) # 72526344
a = sorted(a) # 預設升序
print(a) # [10, 20, 30, 40]
id(a) # 58807368
a = [20,10,30,40]
id(a) # 72495944
b = sorted(a)
id(a) # 72495944
id(b) # 72581064
c = sorted(a,reverse=True) # 降序
id(a) # 72495944
id(c) # 58807368
print(a,b,c) # [20, 10, 30, 40] [10, 20, 30, 40] [40, 30, 20, 10]
- reversed()返回迭代器
內建函式reversed()也支援進行逆序排列,與列表物件reverse()方法不同的是,內建函式reversed()不對原列表做任何修改,只是返回一個逆序排列的迭代器物件,且只能讀取一次。迭代物件在第一次指標依次取數後,容器內無元素,第二次不能再使用。
a = [20,10,30,40]
b = reversed(a)
type(b) # <class 'list_reverseiterator'>,是一個迭代物件需要list()轉換為列表
list(b) # [40, 30, 10, 20]
list(b) # []
多維列表
列表內巢狀列表的形式,列表也是物件。
一維列表可以幫助儲存一維、線性的資料。二維列表可以幫助儲存二維、表格的資料。
巢狀迴圈列印二維列表所有的資料
a = [
["姓名", "語文", "英語", "數學"],
["張三", 90, 100, 98],
["李四", 88, 100, 90],
["王五", 93, 90, 98],
["壬六", 95, 90, 88]
]
for m in range(5):
for n in range(4):
print(a[m][n], end="\t") # 在每行內元素用製表符隔開
print() # 用換行符隔開每行資料
print(a[3][2]) # 90,二維列表的切片,讀取王五的英語成績