1. 程式人生 > 實用技巧 >列表list

列表list

資料型別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