深入理解 Python 中的 list() 函数,这是处理财会数据时高频用到的基础函数。简单说,list() 是用来创建或转换出列表(Python 最核心的有序可变数据结构)的工具——不管是把 .glob() 找到的 Excel 文件路径转成可操作的列表,还是把财务数据的生成器/元组转成列表,都离不开它。
本文从「核心定义 → 用法分类 → 财会实操示例 → 避坑点」逐层讲解。
一、核心定义:list() 是什么?
list() 是 Python 的内置构造函数,核心作用有两个:
-
创建一个空列表;
-
将「可迭代对象」(比如 .glob() 返回的生成器、元组、字符串、pandas 列等)转换成列表。
对财会场景来说,列表是存储“多笔发票金额、多个文件路径、多条台账记录”的核心容器。
二、list() 的核心用法
1. 创建空列表(初始化数据容器)
语法:list()。用来存放后续读取的财务数据(比如累加多笔发票金额、收集多个 Excel 文件路径)。
2. 将可迭代对象转成列表(最常用)
语法:list(可迭代对象)。把生成器、元组、字符串、range、Series 等的元素“提取”出来,组成有序列表。财会场景 6 种常见转换:
| 可迭代对象 | 财会场景 | 代码与输出 |
|---|---|---|
| glob 生成器(文件路径) | 把找到的 Excel 文件路径转成列表 | excel_files = list(folder.glob(’*.xlsx’)) |
| 元组(固定财务数据) | 税率元组转成可修改的列表 | list((0.03,0.06,0.13)) → [0.03,0.06,0.13] |
| range(批量生成数字) | 生成 1-12 月的月份列表 | list(range(1,13)) → [1,2,…,12] |
| 字符串(拆分文本) | 拆分发票号字符做格式校验 | list(‘SF20251201’) → [‘S’,‘F’,‘2’,…] |
| pandas Series | Excel 金额列转成列表逐个处理 | list(df[‘金额’]) → [10000.0, 25000.5] |
| 集合(去重后转列表) | 客户名称去重 | list({‘甲公司’,‘乙公司’,‘甲公司’}) |
3. list() vs 直接用 []
-
list() 是函数,适合转换已有可迭代对象;
-
[] 是字面量,适合直接创建列表/初始化空列表;
三、list() 的核心特性(新手必知)
-
返回的列表是「有序、可变」的:元素有固定顺序,可通过索引取值(excel_files[0]),也可 append/删除/修改——这是动态收集异常发票金额等需求的基础。
-
可迭代对象的“遍历提取”:list() 会逐个遍历元素全部提取出来,比如 .glob() 的生成器会被一次性加载到内存(文件数量少时没问题)。
-
空可迭代对象转空列表:如果 .glob() 没找到文件,list() 返回 [],所以要用 if not excel_files: 判断避免后续报错。
-
不改变原对象:list() 是“转换”而非“修改”,原 Series/生成器不变。
四、财会场景避坑点
-
避免转换超大可迭代对象:处理上万条流水时直接 list() 会把所有数据加载到内存导致卡顿,应直接遍历生成器。
-
注意 pandas Series 转换的缺失值:金额列转列表前先 fillna(0)。
-
区分列表和生成器:生成器按需取值(取一个加载一个),列表一次性加载所有。
五、财会场景综合示例(开箱即用)
总结
-
list() 是 Python 内置函数,核心作用是创建空列表,或把可迭代对象转成有序、可变的列表;
-
财会场景最常用:把 .glob() 生成器转成文件路径列表、把 pandas 列转成金额/发票号列表;
-
关键避坑:处理空列表、避免转换超大可迭代对象、过滤 Excel 临时文件(~$ 开头)。