列表list
阿新 • • 發佈:2020-10-25
資料型別:int整型 float浮點數 bool布林值 str字串 list列表 tuple元組 dict字典 set集合
可變資料型別:
字典、列表、集合、自定義的物件等
不可變資料型別:
數字、字串、元組、function等
list(可變資料型別)
列表:高階陣列
概念:
儲存多個數據(多個數據可以是任意型別)
定義形式:
scores = [89,99,35,5,23,100]
names = ["東方月初","王權富貴"]
訪問:
索引值(like str)
list_name = ["張楚嵐", "張靈玉", "諸葛青","王也道長"] # 訪問第一個《一人之下》名字print("第一個人的名字:%s" % list_name[0]) # 第一個人的名字:張楚嵐 # 訪問最後一個《一人之下》名字 print("最後一個人的名字:%s" % list_name[-1]) # 最後一個人的名字:王也道長 print("最後一個人的名字:%s" % list_name[len(list_name) - 1]) # 最後一個人的名字:王也道長
遍歷列表(while迴圈、for迴圈)
list_name = ["張楚嵐", "張靈玉", "諸葛青","王也道長"] # 如何列印列表中所有的資料(遍歷) # 1.使用 while迴圈 i = 0 print("使用while遍歷列表中的元素:") while i < len(list_name): print(list_name[i], end="\t") i += 1 # 2.使用第一種 for迴圈 print("\n使用第一種for遍歷列表中的元素:") for i in range(len(list_name)): print(list_name[i], end="\t") # 3.使用第二種 for迴圈 print("\n使用第二種for遍歷列表中的元素:") for name in list_name: print(name,end="\t")
操作列表常用的方法
1.增(append、insert、extend)
append()
通過append向指定列表新增元素(預設在最後插入元素)
insert()
在指定索引值的位置,插入新的元素(指定插入元素的位置)
extend()
將另外一個列表中所有的元素,逐個插入到指定列表中
# ---------------插入操作------------------- # 建立一個空列表 names = [] # append新增元素,只能實現往後插入元素 names.append("王權霸業") names.append("東方淮竹") print("names = ",names) # insert在指定索引的得位置,插入新的元素 names.insert(0,"《狐妖小紅娘》") print("names = ",names) # extend將另外一個列表中所有的元素,逐個插入到指定列表中 names2 = ["東方月初","塗山紅紅"] names.extend(names2) print("names = ",names)
2.刪(del、pop、remove、clear)
del()
根據下標進行刪除
pop()
刪除最後一個元素
remove()
根據元素的值進行刪除
clear()
刪除列表裡的所有元素,返回一個空列表
# ---------------刪除操作------------------- names = ["《狐妖小紅娘》","王權霸業","東方淮竹","東方月初","塗山紅紅","淮竹雖為妾,霸業為娶妻"] # remove 只能按元素的值進行刪除 names.remove("淮竹雖為妾,霸業為娶妻") print("names = ",names) # pop 預設刪除最後一個元素,也可以按索引值進行刪除 names.pop() print("names = ",names) # names.pop(0) # print("names = ",names) # del 按索引值進行刪除,也可以刪除整個列表 del names[3] print("names = ",names) # del names # 刪除 names列表,不光是刪除列表裡的元素,列表都刪除來了 # clear 刪除列表裡的所有元素,返回一個空列表 names.clear() print("names = ",names)
3.改
二次賦值的時候,新值覆蓋舊值
list[index] = "要修改的內容"
# ---------------修改操作------------------- names = ["《狐妖小紅娘》","王權霸業","東方淮竹","東方月初","塗山紅紅"] # 二次賦值的時候,新值覆蓋舊值 names[4] = "王權富貴" print("names = ",names)
4.查(index、count、in、not in )
index()
查詢指定元素的值,在列表中的索引值(如果有,返回索引值,沒有則報錯 ValueError)
count()
計算指定元素出現的次數(如果有,返回出現的次數,沒有則返回0)
in
返回bool值,True/False
not in
返回bool值,True/False
# ---------------查詢操作------------------- names = ["《狐妖小紅娘》","王權霸業","東方淮竹","東方月初","塗山紅紅"] # index查詢指定元素的值,在列表中的索引值 print("列表元素\"東方月初\"的索引值:",names.index("東方月初")) # count計算指定元素出現的次數 print("列表元素\"東方月初\"的出現的次數:",names.count("東方月初")) # in 與 not in print("列表元素\"東方月初\"的是否在列表裡面:","東方月初" in names) print("列表元素\"東方月初\"的是否不在列表裡面:","東方月初" not in names)
5.列表中元素的排序
sort()
1>按自然順序(從小到大)進行排序
2>對原資料直接進行排序操作,不會生成新的備份
3>sort 中預設從小到大進行排序(如果reverse = True,則從大到小進行排序)
list1 = [98,20,100,66,88,10,90] # 按自然順序(從小到大)進行排序 list1.sort() print("list1 = ",list1) # sort 中reverse,從大到小進行排序 list2 = [98,20,100,66,88,10,90] list2.sort(reverse=True) print("list2 = ",list2)
案例:做一個學生資訊管理系統,用列表儲存學生資訊
儲存學生資訊:
students = [[],[],[]]
硬性要求:
1.新增學生功能
2.展示所有學生資訊功能
3.退出功能
專案: 學生管理系統v1.0
歡迎光臨學生管理系統v1.0:
1.新增學生
2.查詢學生
3.展示所有
4.刪除學生
5.修改學生
6.退出系統
# 用來儲存所有學生資訊 students = [] # # 新增學生的邏輯 def append_stu(): name = input("請輸入學生姓名:") score = int(input("請輸入學生分數:")) # 儲存單個學生資訊 student = [name,score] # 將學生新增到學生列表中 students.append(student) print("新增成功!") # # 檢視所有學生的邏輯 def show_stu(): print("所有學生資訊如下:") for sub_students in students: for list_stu in sub_students: print(list_stu,end="\t") print() # # 修改學生資訊的邏輯 def update_stu(): name_1 = input("請輸入要修改的學生姓名:") # 用index 記錄是否查詢到學生姓名 index = -1 # 遍歷列表中所有的子列表,判斷是否包含要查詢的名字 for i in range(len(students)): if name_1 in students[i]: # 當找到匹配的學生姓名,用index記錄名字所在列表的索引值 index = i break if index == -1: print("很遺憾,學生資訊裡沒有您要修改的學生名字:%s,請核對後再次操作..."%name_1) else: # 找到要修改的資料,並進行後續修改操作 new_name = input("請輸入新的學生姓名:") students[index][0] = new_name new_score = int(input("請輸入修改後的分數:")) students[index][1] = new_score print("修改成功!") # # 查詢學生資訊的邏輯 def inquire_stu(): name_2 = input("請輸入要查詢的學生姓名:") # 用index記錄是否能查詢到學生姓名 index = -1 # 遍歷列表中所有的子列表,判斷是否包含要查詢的名字 for i in range(len(students)): if name_2 in students[i]: # 當找到匹配的學生姓名,用index記錄名字所在列表的索引值 index = i break if index == -1: print("很遺憾,學生資訊裡沒有您要查詢的學生名字:%s,請核對後再次操作..."%name_2) else: # 找到要查詢的資料,並進行後續操作 print("學生姓名:{0}\t分數:{1}".format(students[index][0],students[index][1])) # # 刪除學生資訊的邏輯 def delete_stu(): name_3 = input("請輸入要刪除的學生姓名:") # 用index記錄是否能查詢到要刪除的學生姓名 index = -1 # 遍歷列表中所有的子列表,判斷是否包含要刪除的名字 for i in range(len(students)): if name_3 in students[i]: # 當找到匹配的學生姓名,用index記錄名字所在列表的索引值 index = i break if index == -1: print("很遺憾,學生資訊裡沒有您要刪除的學生名字:%s,請核對後再次操作..." % name_3) else: # 找到要刪除的資料,並進行後續修改操作 del students[index] print("刪除成功!") while True: print("--------------- 歡迎光臨學生管理系統v1.0 ---------------") print("1.新增學生") print("2.查詢學生") print("3.展示所有") print("4.刪除學生") print("5.修改學生") print("6.退出系統") # 輸入指令開關 switch_input = True while switch_input: choice = input("請您選擇1-6要執行的操作:") if choice >= "1" and choice <= "6": switch_input = False else: print("輸入指令有誤,請按照提示重新輸入...") #根據鍵盤錄入的指令,進行後續操作 if choice == "1": # 新增學生的邏輯 append_stu() elif choice == "2": # 查詢學生的資訊 inquire_stu() elif choice == "3": # 檢視所有學生的邏輯 show_stu() elif choice == "4": # 刪除學生的資訊 delete_stu() elif choice == "5": # 修改學生的邏輯 update_stu() else : print("感謝您的使用,下次再見...") break