1. 程式人生 > 其它 >python學習筆記_第5天

python學習筆記_第5天

技術標籤:學習筆記python程式語言

列表物件的常用函式

  • 列表元素訪問
  1. 通過索引直接訪問+切片
    索引區間在[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],從右到左反向提取
  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處
  • 列表函式
  1. count()方法
    返回指定元素在列表中出現的次數。
a = [1,2,3,5,4,2,5,2,9]
a.count(2)  # 3
  1. len()方法
    返回列表長度,即列表中包含元素的個數。
a = [1,2,3,5,4,2,5,2,9]
len(a)  # 9
  1. 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 
  1. max(list) 和 min(list)
    返回列表中最大和最小值
  2. sum(list)
    對數值型列表的所有元素進行求和操作,對非數值型列表運算則會報錯。
a = [3,10,20,15,9]
sum(a)  # 57
  • 列表排序
  1. 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]
  1. 內建函式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]
  1. 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,二維列表的切片,讀取王五的英語成績