[[1, '34', '44'], [1, '40', '30', '41'], [1, '41', '40', '42'], [1, '42', '41', '43'], [1, '43', '42', '44'], [1, '44', '34', '43']]
我有一个列表列表。我的目的是检查任何一个子列表是否与其他子列表有任何共同点(不包括要比较的第一个索引对象)。如果它有任何共同点,则统一这些子列表。
例如,对于这个例子,我的最终答案应该是这样的:
[[1, '34', '44', '40' '30', '41', '42', '43']]
我可以理解我应该将子列表转换为集合,然后使用 union() 和 intersection() 操作。但我坚持的是如何比较每个集合/子列表。我无法在列表上运行循环并逐个比较每个子列表,因为列表的内容会被修改,这会导致错误。
我想知道的是有什么有效的方法来比较所有子列表(转换为集合)并获得它们的并集?
原文由 Tapojyoti Mandal 发布,翻译遵循 CC BY-SA 4.0 许可协议
itertools 模块简化了这个问题:
另一种方法是将列表解压缩为 union() 的单独参数:
后一种方法消除了所有重复项,并且不需要先将输入转换为集合。此外,它不需要导入。