列表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