python - 在列表列表中查找重叠列表
问题描述
我有一个列表列表,需要根据列表项的常见情况进行合并。共享元素的列表需要合并在一起形成集群。
我考虑过广度优先遍历来做这件事,但是由于列表列表的排列方式,很难实现遍历
列表示例列表:
input:
[
[1,2,3],
[2,4,5],
[4,6,8],
[9,10,16],
[16,18,19],
[20,21,22]
]
output: [[1,2,3,4,5,6,8], [9,10,16,18,19], [20,21,22]]
前三个列表需要合并成一个列表(第一个列表和第二个列表有2个,第二个和第三个列表共享4个),第四个和第五个需要合并,因为两个共享16。第三个不合并任何其他列表,因为它不与其他列表共享任何元素。
虽然这可以在 O(n^2) 时间内完成(n 是列表的数量),但我试图找到最有效的方法。
解决方案
您的内部列表没有重复的元素。如果这是一般情况,那么 Rosetta Code 上的集合合并任务有一个可以工作的 Python 解决方案。
推荐阅读
- angularjs - 如何使用指令表达式`&`绑定调用控制器函数
- html - IE11 flexbox 不考虑换行文本的高度
- macos - 如何使用 GoLang 以编程方式禁用 Mac 终端的回显
- git - 使用名称中的特定字符串构建分支
- vbscript - 我如何在 VBscript 中制作一个假的进度条
- node.js - 使用 Mocha 进行节点超级测试:未捕获的错误:读取 ECONNRESET
- regex - 正则表达式获取一组文本
- ios - self 与“generic typet” ceating 扩展时的 T 差异
- ruby-on-rails - 如何为一位 kiosk 用户优化 Rails?
- ansible - Ansible:从字典中删除项目