Python 办公自动化从入门到入土|06数据容器之列表
前言
前几节我们学了变量、判断、循环基础语法,从本节开始正式学习数据容器,办公自动化 90% 的数据处理都离不开列表(list)。
不管是读取 Excel 一列数据、批量整理文件名、汇总销售记录、筛选客户信息,底层全靠列表存储、批量操作数据。
6.1 什么是列表?办公场景通俗理解
列表就是有序、可修改的 “数据收纳盒”,可以一次性存放多条数据,数字、文字、嵌套子列表都能塞进去。
办公类比
Excel 里的一整列姓名、所有报表文件名、月度销售金额,都可以用列表装起来批量处理,不用一行行手动复制粘贴。
语法:使用中括号 [] 包裹内容,多个元素用逗号隔开。
#定义空列表
my_list = []
my_list2 = list()
# 存放员工姓名(字符串列表)
staff = ["张三","李四","王五"]
# 存放月度销售额(数字列表)
sales = [12500, 8900, 15600]
# 混合类型(Excel经常出现文字+数字)
info = ["2026-07", 3500, "财务部"]
# 空列表,办公常用:后续循环往里面追加数据
data_list = []
6.2 列表索引与切片:精准提取表格数据
列表里每个元素都自带唯一编号,叫做索引,是读取 Excel 指定行、指定单元格数据的核心。
正向索引:从左往右(队头→队尾),从 0 开始计数
反向索引:从右往左(队尾→队头),从 - 1 开始计数(快速获取最后一条数据)
示例列表:ls = [12, '12', ['p', 't'], 'a']
正向索引依次:0、1、2、3
反向索引依次:-4、-3、-2、-1
⚠易错重点:12(数字) 和 '12'(字符串)是两种完全不同的数据!处理 Excel 经常踩坑:单元格文本型数字、数值型数字肉眼一样,代码判定不相等。
基础取值示例
sales = [12500, 8900, 15600, 9800, 23000]
# 正向索引,取第一条数据
print(sales[0])
# 反向索引,直接取列表最后一条(办公极其常用)
print(sales[-1])
# 注意:索引超出范围程序会直接报错,列表只有5个元素,不能写sales[6]
切片:批量截取一段数据(办公高频)
语法:列表[起始:结束:步长],左闭右开,结束位置元素不会被取出
sales = [12500, 8900, 15600, 9800, 23000]
# 截取前3个月业绩(索引0、1、2)
print(sales[0:3])
# 省略起始,从头截取到索引4之前
print(sales[:4])
# 省略结束,从索引2一直截取到末尾
print(sales[2:])
# 步长=2,间隔一条数据取值
print(sales[::2])
6.3 列表增删改查:Excel 数据清洗核心操作
日常办公读取表格后,经常需要新增记录、删除无效空行、修改错误数据、查找指定内容,对应列表全套方法,分段讲解。
6.3.1 增:追加 / 插入数据
- append():末尾新增一条(循环读取 Excel 行必用)
staff = ["张三","李四"]
# 在列表最后追加员工
staff.append("王五")
print(staff)
- insert(下标,内容):指定索引位置插入数据
# 在索引1的位置插入员工
staff.insert(1,"赵六")
- extend():合并两个列表(多张 Excel 表格数据汇总)
group1 = ["张三","李四"]
group2 = ["王五","赵六"]
# 将group2全部元素合并进group1
group1.extend(group2)
6.3.2 改:修改表格错误数据
直接通过索引赋值,覆盖原有内容:
sales = [12500, 8900, 15600]
# 第二条销售额录入错误,直接修改
sales[1] = 9200
print(sales)
6.3.3 删:清理无效、重复数据
- pop(索引):删除并且返回被删除的数据,不传参数默认删除最后一条
sales = [12500, 8900, 15600]
last_sale = sales.pop()
print("被删除的数值:",last_sale)
# 删除第一条数据
sales.pop(0)
2.remove(内容):根据内容删除,只会删除第一个匹配项
staff = ["张三","李四","张三"]
# 删除第一个出现的张三
staff.remove("张三")
3.clear():一键清空列表,重置数据容器
sales.clear()
print(sales) # 输出空列表 []
4.del:支持批量切片删除
sales = [12500, 8900, 15600, 9800]
# 删除前两条数据
del sales[0:2]
6.3.4 查:统计、判断、查找元素
sales = [12500, 8900, 12500, 15600]
# len() 获取列表总长度 → 对应Excel有效数据行数
print(len(sales))
# count() 统计内容出现次数(统计重复客户、重复订单)
print(sales.count(12500))
# index() 查询元素对应的索引位置
print(sales.index(15600))
# in 判断数据是否存在(判断客户名单内是否存在目标人员)
if 8900 in sales:
print("存在该笔业绩")
6.4 列表常用内置功能(办公高频)
1. sort () 数据排序(业绩排名、工资排序)
sales = [12500, 8900, 15600, 9800]
# 从小到大升序
sales.sort()
# 从大到小降序(业绩由高到低排序)
sales.sort(reverse=True)
2. reverse () 反转列表顺序
sales.reverse()
3. 二维列表:存储完整 Excel 多行数据
Excel 一整张表格 = 二维列表,外层代表所有行,内层代表单行所有单元格数据
# 模拟Excel三行数据:姓名、部门、销售额
table = [
["张三","销售部",12500],
["李四","财务部",8900],
["王五","销售部",15600]
]
# 读取第二行第一个单元格(李四)
print(table[1][0])
# 循环读取整张表格所有数据
for row in table:
print("员工:",row[0],"部门:",row[1],"业绩:",row[2])
6.5 实战:办公自动化真实场景(Excel 数据处理)
场景需求
读取 Excel 导出的销售名单,完成 4 件事:
- 把所有销售业绩存入列表
- 新增一条本月新员工业绩
- 删除业绩为 0 的无效记录
- 按业绩从高到低排序,输出 Top3 员工
完整可运行代码,分段讲解
# 1. 模拟从Excel读取的业绩数据
sales_data = [
["张三",12500],
["李四",0],
["王五",15600],
["赵六",9800]
]
2. 新增新员工业绩(append追加)
sales_data.append(["孙七",18200])
3. 循环过滤,删除业绩为0的无效行(办公数据清洗高频操作)
new_sales = []
for row in sales_data:
# 只保留业绩大于0的数据
if row[1] > 0:
new_sales.append(row)
4. 按业绩降序排序
key=lambda x:x[1] 代表按照第二个数值排序
new_sales.sort(key=lambda x:x[1], reverse=True)
5. 输出前三名业绩
print("本月业绩TOP3:")
for i in range(3):
name, money = new_sales[i]
print(f"{name}:{money}元")
6.6 新手避坑指南(办公脚本最容易踩的错)
- 索引从 0 开始计数,不要直接把 Excel 行号当做索引,极易发生索引越界报错
- 2.remove() 删除不存在的元素会直接报错,删除前建议先用 if xx in 列表 判断
- sort () 会直接修改原列表,如果想要保留原始数据,可以使用sorted()
- 二维列表取值顺序:先行、后列,和 Excel【行,列】逻辑保持一致
- 数字12与字符串"12"不相等,导入 Excel 表格数据时格外留意格式问题
本章小结
- 列表 [] 是有序可变容器,完美适配 Excel 单列、整表数据存储
- 索引切片精准提取数据,增删改查覆盖绝大部分表格清洗操作
- 一维列表存储单列数据,二维列表直接对应整张 Excel 表格
- 办公两大核心场景:表格数据处理、批量文件筛选都依靠列表实现
更多推荐


所有评论(0)