zoukankan      html  css  js  c++  java
  • python数据结构与算法之list


    1. 数据结构的操作

    作为一种包含元素的数据结构,需要提供一些“标准”操作:

    • 创建和销毁
    • 判断是否空,如果容量有限,还需判断是否满
    • 向结构中加入元素或从中删除
    • 访问结构里的元素

    不同的编程语言可能影响需要实现的操作:

    由于python能自动回收不用的对象,因此不需要销毁结构的操作


    2. 从支持操作类型的角度看,数据结构可分为两类:

    • 不变数据结构,如python中的tuple和frozenset
    • 变动数据结构,如python中的list,dict,set

    3. python的list

    list是一种线性结构,可看作线性表的一种实现:

    • 基于下标(位置)的元素访问和更新操作,复杂性为O(1)
    • 允许任意加入元素,而且维持表对象标识不变(id())

    list实现约束和解决方案:

    • 要求O(1)的元素访问并维持元素的顺序,只能采用连续表技术,元素保存在一块连续存储区
    • 要能容纳任意多个元素,必须在元素个数将要超出存储区容量时换一块更大的存储区。要想在替换存储时id不变,只能采用分离式实现

    list里元素越多,换一次存储区的代价也越高:

    • 要想平均结果较好,随着表长度增加,换存储区的频率应降低
    • 一种可能做法:每次换存储区,容量加倍

    一次高开销操作后,保证有很多次低开销操作,称为分期付款式的常量复杂性

    python中list采用上述设计,因此lst.insert(len(lst), x)比一般位置加入的效率高.等价写法lst.append(x),若合适就应优先使用。

  • 相关阅读:
    Java集合中迭代器
    java 基础归纳总结(三)
    java 基础归纳总结(二)
    java 基础归纳总结(一)
    python之hashlib模块
    python之configparser模块
    Python之time模块
    python之os模块
    python之random模块
    python generator(生成器)
  • 原文地址:https://www.cnblogs.com/Bella2017/p/8094667.html
Copyright © 2011-2022 走看看