如何有效地检查列表(或.tuple)是否是另一个列表(或.tuple)的子部分

时间:2019-11-29 01:51:43

标签: python list tuples

我有大量的数字序列(例如[1、3、5、7])。我有两个要求: 1.删​​除重复项。 2.如果有一个序列是另一个序列的子序列,我也只想保留最长的序列。例如:

[1, 3, 2]
[1, 3, 2]
[1, 3, 2, 4]
[1, 3, 2, 4, 5]
[1, 2, 2, 3, 4]

然后只保留:

[1, 3, 2, 4, 5]
[1, 2, 2, 3, 4]

我使用元组存储数字序列。然后通过Counter(tuple_collection)删除重复项。目前,我只能通过匹配每个元素来提出检查每对的方法。但是,是否有更有效的方法来进行下一步?

1 个答案:

答案 0 :(得分:0)

是的,有一个更有效的解决方案。您可以实现Trie

在您的情况下:

  

特里将是一个树状的数据结构,其节点存储了   名单。通过以特定方式构造节点,可以通过遍历一个   树的分支路径。

最初创建Trie是为了存储字符串并执行诸如搜索前缀之类的操作等,当您拥有无数的字符串时,它们会占用较少的内存。

详细了解complexities of a Triefast non-standard data structures in python

希望这会有所帮助。祝你好运。