极奇策RPA技术教程:随机打乱列表 (NodeShuffleList) - 自动化开发与配置详细指南

随机打乱列表
📖 节点概述
随机打乱列表中元素的顺序(Fisher-Yates shuffle 算法)。输入可以是列表对象、JSON 数组字符串或多行文本(每行一个元素)。每次求值都会产生不同的随机顺序(除非设置了随机种子)。原列表保持不变,返回打乱后的新列表。该节点为纯数据节点,无执行端口。
💡 使用场景:
- 随机抽样前的准备:打乱列表后再取前 N 个,实现简单的不重复随机抽样。
- 游戏随机性:随机排序玩家列表、抽奖名单或卡牌顺序。
- 数据匿名化:打乱原始数据顺序,避免顺序偏差。
- 训练/测试集分割:随机打乱数据集后,再按比例切分。
- 任务队列随机化:将待处理任务列表随机排序,避免饿死或偏向。
🎮 实战连线指南:如何正确使用它?
节点有一个输入端口 列表 和一个输出端口 打乱后的列表。
场景案例:随机打乱水果列表
准备列表:在“列表”多行文本框输入:
apple banana cherry date或从上游传入列表
["apple", "banana", "cherry", "date"]。获取结果:每次执行,
打乱后的列表会输出一个随机顺序的新列表,例如["cherry", "apple", "date", "banana"]。后续使用:将打乱后的列表用于抽奖、随机展示等。
JSON 数组示例:
- 列表:
[1, 2, 3, 4, 5] - 可能输出:
[3, 1, 5, 2, 4]。
空列表处理:
- 如果列表为空,输出为空列表
[]。
⚙️ 引脚与参数说明
📥 输入引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 列表 | LIST / STRING | 待打乱的列表。可以是列表对象、JSON 字符串(如["a","b"])或多行文本(每行一个元素)。 |
⚙️ 控件参数
| 控件名称 | 类型 | 说明 |
|---|---|---|
| 列表 | 多行文本框 | 手动输入列表内容(每行一个元素,或 JSON 列表)。连线时优先使用连线值。 |
📤 输出引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 打乱后的列表 | LIST | 随机打乱顺序后的新列表(原列表不会被修改)。 |
🔧 行为说明
- 打乱算法为 Python 标准库的
random.shuffle(),在原列表副本上操作,不修改输入。 - 随机性基于 Python 的
random模块,默认种子为系统时间。如需可重复的随机结果,请在流程开始时使用【随机种子】节点固定种子。 - 输入列表的解析方式与【列表反转】等节点一致,支持列表对象、JSON 数组、多行文本。
⚠️ 注意事项
- 原列表不变:节点返回打乱后的新列表,不会修改原输入列表。
- 随机性:每次运行(甚至同一次运行中的多次求值)结果都可能不同。如需可重复的打乱顺序,请先设置随机种子。
- 空列表:输入为空列表时,输出也为空列表。
- 单元素列表:打乱后仍为相同列表(顺序不变)。
- 性能:打乱操作时间复杂度 O(n),n 为列表长度。
- 类型保留:列表元素类型在打乱后保持不变。
💎 小贴士:
- 如果需要随机抽取一个元素而不打乱整个列表,可使用【列表随机抽取一个】节点。
- 打乱后配合【列表截取】可以实现不重复随机抽样(如打乱后取前 5 个)。
- 若需要多次打乱并得到相同顺序(如测试场景),请在流程开头连接【随机种子】节点并设置固定整数种子。
- 由于是纯数据节点,无需执行信号,可在数据流中随时调用。
这篇文档对您有帮助吗?
您的反馈将帮助我们持续优化文档内容

