【发布时间】:2015-08-26 17:49:14
【问题描述】:
[[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() 操作。但我坚持的是如何比较每个集合/子列表。我无法在列表上运行循环并一一比较每个子列表,因为列表的内容会被修改,这会导致错误。
我想知道是否有任何有效的方法来比较所有子列表(转换为集合)并获得它们的联合?
【问题讨论】:
-
你需要同样的订单吗?
-
不,不需要保留顺序。
-
是否还有其他以 e.g. 开头的列表?
2,哪个不应该合并? -
其实我忘了强调一个重要条件。对不起,我错了。我还提到,当且仅当子列表有共同点时才应该统一子列表,否则它们应该保持原样。因此,首先需要检查 intersection() 如果不为空,则只需执行 union。 @Peter Wood 不,不会有任何带有单独起始索引元素的子列表,如“2”或“3”。我的意思是在列表列表中,所有子列表都将具有相同的第一个索引元素。
标签: python list python-3.x set-union