用于将2D列表减少为其唯一元素,维持顺序的算法

时间:2016-12-04 21:53:10

标签: python algorithm

输入:

[[102, 106], [106, 107], [101, 106], [104, 105, 106], [105], [103, 105], [104]]

期望的输出:

[102, 107, 101, 106, 105, 103, 104]

原始数组的每个索引基本上都是结果数组中索引的可能性列表。目标是在结果数组中表示每个数字一次。我很难为这项任务找到合适的算法类型。对这类问题采取什么样的一般方法?

1 个答案:

答案 0 :(得分:1)

您可以在展开列表后使用unique_everseen

# sample input
data = [[102, 106], [106, 107], [101, 106], [104, 105, 106], [105], [103, 105], [104]]

from  more_itertools import unique_everseen
data = list(unique_everseen([a for sub in data for a in sub]))