检查大型列表中是否存在子列表的最快方法

时间:2018-01-12 18:28:12

标签: python python-3.x list

假设我有一个大约1 000 000个子列表的列表list1。接下来,我想检查列表中是否存在给定元素a,它是一个子列表。通常情况下,使用if a in list1进行检查就足够了,但是使用大型列表它的工作速度非常慢。还有另一种方式吗?

1 个答案:

答案 0 :(得分:1)

既然你声明你可以使用元组,我建议你将每个子列表变成元组,然后制作这些元组的set。然后,搜索set将是O(1)查找。但是,该集合的初始构造可能成本很高,但如果您进行多次查找,则值得。

>>> set_of_sublists = {tuple(sublist) for sublist in orignal_list}
>>> tuple(sublist_to_check_for_membership) in set_of_sublists

我想承认@BrettBeatty最初也提供了这个答案,但后来又将其删除了。