【问题标题】:The fastest way to check if the sub-list exists on the large list检查子列表是否存在于大列表中的最快方法
【发布时间】:2018-01-12 18:28:11
【问题描述】:

假设我有一个列表 list1 大约 1 000 000 个子列表。接下来,我想检查给定的元素a,它是一个子列表,是否存在于列表中。通常,使用if a in list1 检查就足够了,但如果列表很大,它的工作速度会很慢。还有其他方法吗?

【问题讨论】:

  • 你能用元组代替列表吗?
  • 我没有看到任何禁忌症

标签: python python-3.x list


【解决方案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 最初也给出了这个答案,但后来又删除了。

【讨论】:

  • 我刚刚注意到他删除了。虽然我不知道为什么,因为答案其实很好。
猜你喜欢
  • 2018-11-03
  • 2022-06-06
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2015-01-10
  • 1970-01-01
相关资源
最近更新 更多