【问题标题】:How do nested variable types change time complexity?嵌套变量类型如何改变时间复杂度?
【发布时间】:2015-08-15 13:52:56
【问题描述】:

我正在创建一个包含如下嵌套类型的列表:

nested = [{}, set([]), []]

假设“嵌套”中的每个项目都有很多项目。

  1. 对于“嵌套”中的每种类型的项目,Python's Wiki 中的哪些操作会因为项目是嵌套的而改变复杂性?对于添加、删除、弹出等操作。如果 nested[1]nested[2] 各有 1,000 或 10,000 或 1,000,000 个项目,对 nested[0] 执行操作会改变该字典的复杂性吗?
  2. 哪些操作会改变“嵌套”列表的复杂性?对于nested.pop(2) 之类的东西,nested[2] 可能有 1,000 个项目。如果nested[2] 有 1,000,000 个项目,nested.pop(2) 会花费相同的时间吗?

我担心将嵌套项添加到集合、字典和列表中的弹出项会因为嵌套而改变这些操作的 O(1) 优势。

【问题讨论】:

    标签: python list dictionary set time-complexity


    【解决方案1】:
    1. nested[1]nested[2] 对在 nested[0] 上执行操作所花费的时间没有任何影响。一个对象不知道它可能在哪些容器中被引用,也不知道它所在的容器中可能还有哪些其他对象。

    2. 无论添加、删除、检索或替换哪些对象,列表操作都需要相同的时间。 nested[2] 是什么并不重要; nested.pop(2) 花费相同的时间。散列一个大的或高度嵌套的元组或其他可散列对象可能需要更长时间,因此像 dictset 这样的基于散列的数据结构可能需要更长的时间来处理大的或高度嵌套的键,尽管没有任何这样的担忧值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多