极奇策RPA技术教程:列表展平 (NodeListFlatten) - 自动化开发与配置详细指南

列表展平
📖 节点概述
将嵌套的多层列表完全展平为一维列表。输入可以是列表对象、JSON 数组字符串或多行文本(每行一个元素),支持任意深度的嵌套。输出为展平后的列表。该节点为纯数据节点,无执行端口。
💡 使用场景:
- 数据归一化:将层级不一的树形数据结构转为平坦列表,便于后续处理。
- JSON 解析后处理:解析嵌套 JSON 数组后,提取所有叶子节点值。
- 矩阵转列表:将二维矩阵(如
[[1,2],[3,4]])转为[1,2,3,4]。 - 配置合并:将多层分组配置统一展开为单层列表。
- 递归数据收集:从具有层级关系的数据中收集所有底层元素。
🎮 实战连线指南:如何正确使用它?
节点有一个输入端口 嵌套列表 和一个输出端口 展平列表。
场景案例:展平多层嵌套的用户分组列表
- 准备嵌套列表:假设用户分组结构为
["admin", ["editor", "viewer"], ["guest", ["vip"]]],可以:- 从上游节点传入列表对象,或
- 在“嵌套列表”文本框输入 JSON 字符串:
["admin", ["editor", "viewer"], ["guest", ["vip"]]]。
- 获取结果:
展平列表输出["admin", "editor", "viewer", "guest", "vip"]。 - 后续使用:将展平后的列表用于权限校验或展示。
手动多行文本输入:
如果输入为多行文本,每行会被视为一个元素(不会自动解析嵌套)。例如输入:
[1,2] [3,4]由于每行是字符串,展平后输出
["[1,2]", "[3,4]"]。如需解析嵌套,建议使用 JSON 格式。
递归展平示例:
- 输入:
[1, [2, [3, [4]]]]→ 输出:[1, 2, 3, 4] - 输入:
[[[1]]]→ 输出:[1]
⚙️ 引脚与参数说明
📥 输入引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 嵌套列表 | LIST / STRING | 待展平的嵌套列表。可以是列表对象、JSON 字符串(如[1,[2,3]])或多行文本(每行一个元素,不自动解析嵌套)。 |
⚙️ 控件参数
| 控件名称 | 类型 | 说明 |
|---|---|---|
| 嵌套列表 | 多行文本框 | 手动输入列表内容(JSON 格式或每行一个元素)。连线时优先使用连线值。 |
📤 输出引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 展平列表 | LIST | 完全展平后的一维列表。 |
🔧 解析与展平逻辑
- 输入解析(
_to_list方法):- 如果输入已经是列表或元组,直接使用。
- 如果是 JSON 数组字符串(如
"[1,2]"),解析为列表。 - 如果是 Python 字面量(如
[1,2]),通过ast.literal_eval解析。 - 否则,按换行符拆分为字符串列表(每行一个元素)。
- 递归展平(
_flatten方法):- 遍历输入列表的每个元素。
- 如果元素是列表或元组,递归展平后追加到结果。
- 否则直接追加到结果。
- 返回最终的一维列表。
⚠️ 注意事项
- 支持任意深度:递归展平可以处理任意层级的嵌套。
- 元素类型保留:展平后,非列表元素的原类型保持不变(数字、字符串、字典等)。
- 空列表:输入为空列表时,输出也为空列表。
- JSON 输入要求:JSON 字符串必须使用双引号,例如
[1,2]而非[1,2](单引号会解析失败,会回退到按行拆分)。 - 多行文本限制:如果使用多行文本输入,不会自动解析嵌套(每行被视为普通字符串)。需要解析嵌套请使用 JSON 格式。
- 不可哈希元素:展平操作不涉及哈希,因此可以处理嵌套字典、列表等(但字典不会被展平内部键值对,仅保留字典对象本身)。
- 性能:对于深度很大或元素极多的嵌套列表,递归展平可能消耗较多栈空间和时间。Python 递归深度默认约 1000,过深嵌套可能导致递归错误。
💎 小贴士:
- 如果需要展平后的列表用于后续集合操作(如去重、排序),可以直接连接对应节点。
- 展平常用于将多级 JSON 数据中的特定字段收集到一个列表中。
- 配合【列表合并】节点,可以先将多个嵌套列表合并,再一次性展平。
- 若仅需展平一层(即去掉最外层括号),可以使用【列表合并】节点代替(将多个子列表合并)。
- 该节点是纯数据节点,可在数据流中随时调用,无需执行信号。
这篇文档对您有帮助吗?
您的反馈将帮助我们持续优化文档内容

