如何在代码中规范编写大型数组/DataFrame?
处理大型预设数组/DataFrame的最佳实践
把大型预设数据硬编码在代码里确实不是最优解——既不便于维护(修改数据要改代码),也降低了代码可读性,大厂普遍遵循数据与代码分离的原则来处理这类场景,以下是具体实践方案:
1. 用外部文件存储数据,按需读取
这是最常用的方案,把数据从代码中剥离到独立文件,既方便修改,也能让代码更简洁。
- 适用文件类型:
- CSV:最通用的结构化数据格式,适合你这种单列数值的场景,编辑和读取都简单
- Excel:如果需要和非技术同事共享、编辑数据,用Excel更友好
- JSON/YAML:如果后续需要扩展数据字段(比如给厚度加对应的材质、规格),这类格式支持嵌套结构,扩展性更强
- 代码示例(Python + Pandas):
假设把厚度数据逐行写入data/sheet_thickness.csv文件,读取代码如下:
如果用Excel文件:import pandas as pd # 读取CSV为DataFrame,指定列名 df = pd.read_csv("data/sheet_thickness.csv", header=None, names=["thickness"])df = pd.read_excel("data/sheet_thickness.xlsx", sheet_name="Sheet1", header=None, names=["thickness"]) - 优势:数据修改无需改动代码,直接编辑外部文件;数据可单独做版本控制(比如用Git跟踪CSV文件的变更记录);代码逻辑更清晰。
2. 放在配置文件中管理
如果数据量不算极大,但希望和项目配置项统一管理,可以用YAML/INI这类配置文件:
- 示例
config/sheet_config.yaml:sheet_specs: thickness_list: - 2 - 5 - 6 # 其余数值按格式补充 - 读取代码:
import yaml import pandas as pd with open("config/sheet_config.yaml", "r", encoding="utf-8") as f: config = yaml.safe_load(f) df = pd.DataFrame(config["sheet_specs"]["thickness_list"], columns=["thickness"])
3. 代码内硬编码的优化(万不得已时用)
如果因为特殊限制必须把数据留在代码里,至少要优化格式提升可读性:
- 按逻辑分组换行,加注释说明分组规则,比如按厚度范围、批次分类:
Sheet_thickness = [ # 薄规格(≤5mm) 2, 5, 1, 2.5, 1.5, 1, 2, 1, 1, 1, 1.5, 3, 3, 4, 5, 2, 1, 1.5, 2, 2.5, 1.5, # 中规格(6-20mm) 6, 12, 10, 8, 6, 4, 3, 8, 10, 12, 20, 22, 3, 6, 12, 15, 20, 6, 12, 20, 12, 6, 10, 11, 12, 8, 10, 11, 12, 20, 12, 8, 6, 2, 10, 3, 2, 4, 5, 6, # 厚规格(≥25mm) 25, 50, 75, 101, 25, 50 ] df = pd.DataFrame(Sheet_thickness, columns=["thickness"])
额外规范要点
- 项目目录结构要清晰:单独建
data/或config/文件夹存放数据/配置文件,避免和代码文件混放 - 给数据文件加说明:在
data/目录下写README.md,说明数据的来源、含义、更新记录 - 缓存读取结果:如果数据是只读且不会变更的,读取后可以用缓存(比如
functools.lru_cache)避免重复IO操作
内容的提问来源于stack exchange,提问作者GabrielKarloh
相关产品推荐
相关产品推荐

