深入理解 Python 中的 list() 函数,这是处理财会数据时高频用到的基础函数。简单说,list() 是用来创建或转换出列表(Python 最核心的有序可变数据结构)的工具——不管是把 .glob() 找到的 Excel 文件路径转成可操作的列表,还是把财务数据的生成器/元组转成列表,都离不开它。

本文从「核心定义 → 用法分类 → 财会实操示例 → 避坑点」逐层讲解。

一、核心定义:list() 是什么?

list() 是 Python 的内置构造函数,核心作用有两个:

  1. 创建一个空列表;

  2. 将「可迭代对象」(比如 .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() 的核心特性(新手必知)

  1. 返回的列表是「有序、可变」的:元素有固定顺序,可通过索引取值(excel_files[0]),也可 append/删除/修改——这是动态收集异常发票金额等需求的基础。

  2. 可迭代对象的“遍历提取”:list() 会逐个遍历元素全部提取出来,比如 .glob() 的生成器会被一次性加载到内存(文件数量少时没问题)。

  3. 空可迭代对象转空列表:如果 .glob() 没找到文件,list() 返回 [],所以要用 if not excel_files: 判断避免后续报错。

  4. 不改变原对象:list() 是“转换”而非“修改”,原 Series/生成器不变。

四、财会场景避坑点

  1. 避免转换超大可迭代对象:处理上万条流水时直接 list() 会把所有数据加载到内存导致卡顿,应直接遍历生成器。

  2. 注意 pandas Series 转换的缺失值:金额列转列表前先 fillna(0)。

  3. 区分列表和生成器:生成器按需取值(取一个加载一个),列表一次性加载所有。

五、财会场景综合示例(开箱即用)

总结

  1. list() 是 Python 内置函数,核心作用是创建空列表,或把可迭代对象转成有序、可变的列表;

  2. 财会场景最常用:把 .glob() 生成器转成文件路径列表、把 pandas 列转成金额/发票号列表;

  3. 关键避坑:处理空列表、避免转换超大可迭代对象、过滤 Excel 临时文件(~$ 开头)。