假设我有一个大约1 000 000个子列表的列表list1
。接下来,我想检查列表中是否存在给定元素a
,它是一个子列表。通常情况下,使用if a in list1
进行检查就足够了,但是使用大型列表它的工作速度非常慢。还有另一种方式吗?
答案 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最初也提供了这个答案,但后来又将其删除了。