📦 一、什么是数据容器?
数据容器是一种能存放多个数据的数据类型。
数据容器可以更高效地管理成批的数据,且便于存储、访问。
列表(List):像购物车,东西可以随便换
元组(Tuple):像密封袋,东西不能改
集合(Set):像抽奖箱,东西不重复且无序
字典(Dict):像通讯录,有名字有电话
5. 字符串(Str)
今天重点讲列表——最常用、最好用的容器!
🛒 二、列表的定义
# 空列表empty_list = []empty_list = list()# 有数据的列表numbers = [1, 2, 3, 4, 5]fruits = ["苹果", "香蕉", "橙子"]mixed = [1, "hello", 3.14, True] # 列表可以混装不同类型!
列表的特点:
✅ 可以存多个数据✅ 数据可以是不同类型✅ 可以修改(增删改查都支持)✅ 有顺序(每个元素都有编号)
就像一个可扩容的购物车,想装什么装什么!
🔢 三、下标(索引值)
fruits = ["苹果", "香蕉", "橙子", "葡萄"]# 正向下标(从0开始!)print(fruits[0]) # 苹果print(fruits[1]) # 香蕉# 反向下标(从-1开始!)print(fruits[-1]) # 葡萄print(fruits[-2]) # 橙子
✏️ 四、列表的增删改查(重头戏!)
1. 增加元素
fruits = ["苹果", "香蕉"]# 1. append():在末尾添加一个fruits.append("橙子")print(fruits) # ['苹果', '香蕉', '橙子']# 2. insert():在指定位置插入fruits.insert(1, "葡萄")print(fruits) # ['苹果', '葡萄', '香蕉', '橙子']# 3. extend():把另一个列表的元素加进来more_fruits = ["西瓜", "芒果"]fruits.extend(more_fruits)print(fruits) # ['苹果', '葡萄', '香蕉', '橙子', '西瓜', '芒果']
2. 删除元素
fruits = ["苹果", "香蕉", "橙子", "葡萄"]# del:按下标删除del fruits[1]print(fruits) # ['苹果', '橙子', '葡萄']# pop():按下标删除并返回被删元素deleted = fruits.pop(0)print(deleted) # 苹果print(fruits) # ['橙子', '葡萄']# remove():按值删除(只删第一个匹配的)fruits = ["苹果", "香蕉", "苹果"]fruits.remove("苹果")print(fruits) # ['香蕉', '苹果']# clear():清空列表fruits.clear()print(fruits) # []
3. 修改元素
fruits = ["苹果", "香蕉", "橙子"]# 直接通过下标修改fruits[1] = "葡萄"print(fruits) # ['苹果', '葡萄', '橙子']
4. 查询元素
fruits = ["苹果", "香蕉", "橙子", "香蕉"]# index():查找元素的下标(只找第一个)print(fruits.index("香蕉")) # 1,只查找第一层元素,如果没有找到元素直接报错# count():统计元素出现的次数print(fruits.count("香蕉")) # 2,只查找第一层元素# in:判断元素是否在列表中print("苹果" in fruits) # Trueprint("西瓜" in fruits) # False
🛠️ 五、列表的常用方法
1. 排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]# sort():原地排序(从小到大)numbers.sort()print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]# 从大到小排序numbers.sort(reverse=True)print(numbers) # [9, 6, 5, 4, 3, 2, 1, 1]# reverse():反转列表numbers = [1, 2, 3, 4, 5]numbers.reverse() # 只反转第一层元素print(numbers) # [5, 4, 3, 2, 1]
2. 复制
# copy():复制列表original = [1, 2, 3]copy_list = original.copy()copy_list[0] = 999print(original) # [1, 2, 3](原列表没变)print(copy_list) # [999, 2, 3]
📊 六、列表的常用内置函数
前边讲的方法都可以理解为列表的方法(属性),下边是python内置函数
numbers = [10, 30, 20, 40, 50]# len():获取长度print(len(numbers)) # 5# max():最大值print(max(numbers)) # 50# min():最小值print(min(numbers)) # 10# sum():求和, 只能是数值类型print(sum(numbers)) # 150# sorted(数据容器,reverse=布尔值)# 对容器排序(从小到大,不会改变原容器)reverse 用于控制排序方式result = sorted(numbers)print(numbers) # [10, 30, 20, 40, 50]# list():转换成列表s = "hello"print(list(s)) # ['h', 'e', 'l', 'l', 'o']
🔄 七、列表的循环遍历
1. for循环遍历
fruits = ["苹果", "香蕉", "橙子"]# 直接遍历元素for fruit in fruits: print(fruit)# 输出:# 苹果# 香蕉# 橙子
2. while循环遍历
fruits = ["苹果", "香蕉", "橙子"]index = 0while index < len(fruits): print(fruits[index]) index += 1
3. 带下标的遍历
fruits = ["苹果", "香蕉", "橙子"]# start 可选参数,可以让计数从指定值开始(改变的是循环时的“编号”,不是真正的索引值)for index, fruit in enumerate(fruits , start = 2): print(f"第{index}个:{fruit}")print(fruits[0])# 输出:# 第2个:苹果# 第3个:香蕉# 第4个:橙子# 苹果
🎮 八、实战小练习
练习1:求平均分
scores = [85, 92, 78, 90, 88]# 计算平均分average = sum(scores) / len(scores)print(f"平均分:{average}")
练习2:找最大值和最小值
numbers = [3, 1, 4, 1, 5, 9, 2, 6]max_num = max(numbers)min_num = min(numbers)print(f"最大值:{max_num}")print(f"最小值:{min_num}")
练习3:去重
# 方法1:用集合(但会打乱顺序)nums = [1, 2, 3, 2, 1, 4, 5]unique_nums = list(set(nums))print(unique_nums) # [1, 2, 3, 4, 5](顺序可能变)# 方法2:手动去重(保持顺序)result = []for num in nums: if num not in result: result.append(num)print(result) # [1, 2, 3, 4, 5]
🎯 实战大练习:学生成绩管理系统
# 初始化成绩列表scores = [85, 92, 78, 90, 88]print("=== 学生成绩管理系统 ===")while True: print("\n1. 添加成绩") print("2. 删除成绩") print("3. 修改成绩") print("4. 查看所有成绩") print("5. 统计成绩") print("6. 退出") choice = input("请选择操作(1-6):") if choice == "1": score = int(input("请输入成绩:")) scores.append(score) print("添加成功!") elif choice == "2": index = int(input("请输入要删除的下标:")) if 0 <= index < len(scores): deleted = scores.pop(index) print(f"已删除成绩:{deleted}") else: print("下标无效!") elif choice == "3": index = int(input("请输入要修改的下标:")) if 0 <= index < len(scores): new_score = int(input("请输入新成绩:")) scores[index] = new_score print("修改成功!") else: print("下标无效!") elif choice == "4": print("所有成绩:") for i, score in enumerate(scores): print(f"第{i}个:{score}") elif choice == "5": print(f"最高分:{max(scores)}") print(f"最低分:{min(scores)}") print(f"平均分:{sum(scores)/len(scores) :.1f}") elif choice == "6": print("退出系统!") break else: print("无效选择,请重新输入!")