欢迎来到《10天学会Python》第5天!今天学习列表——Python中最常用的数据结构,像是能装各种物品的“数字背包”。
核心概念
列表是一个有序的、可变的数据容器,可以存储多个元素。想象你的书包:书本有固定位置(索引),可以随时取出或放入新书。
python
# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = ["小明", 18, 1.75, True] # 混合类型
重要特性:
- 有序:元素有固定位置,索引从0开始
- 可变:可添加、删除、修改元素
- 包容:可存储任意类型数据,包括其他列表
创建列表的三种方法
1. 直接创建(最常用)
python
shopping_list = ["牛奶", "面包", "鸡蛋"]
2. 使用list()函数转换
python
word_list = list("Python") # 每个字符变成元素:['P', 'y', 't', 'h', 'o', 'n']
3. 列表生成式(简洁高效)
python
# 生成1-10的平方列表
squares = [x**2 for x in range(1, 11)] # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 生成1-20中的偶数
evens = [x for x in range(1, 21) if x % 2 == 0] # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
索引与切片操作
正负索引访问
python
students = ["小明", "小红", "小刚", "小丽"]
first = students[0] # "小明"(索引0是第一个)
last = students[-1] # "小丽"(-1是最后一个)
切片获取子列表
切片语法:列表[开始:结束:步长](** 左闭右开 **)
python
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums[0:3] # [0, 1, 2](索引0到2)
nums[:5] # [0, 1, 2, 3, 4](从头到索引4)
nums[5:] # [5, 6, 7, 8, 9](索引5到末尾)
nums[::2] # [0, 2, 4, 6, 8](每隔一个取一个)
nums[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0](反转列表)
**记忆技巧 **:切片像切蛋糕,从"开始"位置切,到"结束"位置前停止。
常用列表方法详解
添加元素
python
todo = ["写作业", "跑步"]
todo.append("背单词") # 末尾添加单个元素
todo.insert(1, "吃午饭") # 在索引1处插入
todo.extend(["看电影"]) # 合并另一个列表
删除元素
python
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
fruits.remove("香蕉") # 删除第一个匹配的元素
removed = fruits.pop(1) # 删除索引1的元素并返回
fruits.pop() # 删除最后一个元素
fruits.clear() # 清空列表
查找与统计
python
scores = [85, 92, 78, 85, 90]
first_85 = scores.index(85) # 0(第一次出现的位置)
count_85 = scores.count(85) # 2(出现次数)
has_90 = 90 in scores # True(检查是否存在)
排序与反转
python
nums = [5, 2, 8, 1, 9]
nums.sort() # 升序排序:[1, 2, 5, 8, 9]
nums.sort(reverse=True) # 降序排序:[9, 8, 5, 2, 1]
nums.reverse() # 反转列表顺序
sorted_nums = sorted(nums) # 返回新列表,不修改原列表
其他实用方法
python
copy_list = nums.copy() # 创建列表副本
length = len(nums) # 获取列表长度
maximum = max(nums) # 最大值
minimum = min(nums) # 最小值
实践应用:智能购物清单
python
# 初始化清单
shopping = ["牛奶", "面包", "鸡蛋"]
# 显示清单
print("🛒 购物清单:")
for i, item in enumerate(shopping, 1):
print(f" {i}. {item}")
# 添加商品
new_item = input("请输入要添加的商品:")
shopping.append(new_item)
print(f"✅ 已添加:{new_item}")
# 搜索商品
keyword = input("搜索关键词:")
results = [item for item in shopping if keyword in item]
print(f"🔍 找到{len(results)}个匹配:{results}")
# 排序
shopping.sort()
print("📊 排序后:", shopping)
**功能亮点 **:使用 enumerate()显示编号,列表推导式快速搜索,完整CRUD操作。
练习题
练习1:基础操作
创建 students = ["小明", "小红", "小刚", "小丽", "小华"]:
- 添加"小强"到末尾
- 在第三位插入"转校生"
- 删除最后一名同学
- 找出"小红"的位置
- 统计有几个"小红"
练习2:成绩处理
scores = [88, 92, 78, 85, 95, 88, 76]:
- 计算平均分(总分÷人数)
- 找出最高分和最低分
- 将成绩从高到低排序
- 统计90分以上的人数
- 去掉一个最低分,重新计算平均分
练习3:智能分类
items = ["苹果", "香蕉", "铅笔", "橡皮", "橙子", "尺子", "葡萄"]:
- 将水果和文具分成两个列表
- 统计每种水果的数量
- 按字母顺序排列水果列表
- 创建字典
{"水果": 水果列表, "文具": 文具列表}
练习4:列表推导式
- 生成1-20中所有3的倍数
- 将
["hello", "world"]转为全大写 - 从
[1,2,3,4,5,6,7,8,9,10]中筛选出平方大于50的数
总结
列表是Python编程的**瑞士军刀 **,掌握它你能高效管理数据集合。重点:
- 索引从0开始,切片左闭右开
append()/insert()/remove()/pop()修改列表sort()/sorted()排序,reverse()反转- 列表推导式让代码简洁
明天学习元组和集合,了解不可变容器和唯一性集合!
学习建议:多动手练习,尝试用列表解决记账、课表管理等实际问题。