python内置数据结构之list

简介:

列表简单总结

  • 类和实例之间的理解

            人类,哺乳类
            实例是某一类中的真实个体
  • 时间复杂度

            O(1)
            O(n)
            O(n**2)
    
            随着处理的数据逐渐增加,程序返回结果的时间变化的描述.
                O(1)表示无论程序处理的数据如何增加,返回结果的时间是常数
                O(n)随着处理数据的数量n的增加,返回结果的时间线性增长n
                O(n)随着处理数据的数量n的增加,返回结果的时间指数级增长n**2
  • list,链表,queue,stack

            list: 有序的、紧密的可变序列
            链表: 手拉手的有序序列
            queue: 有序队列,常用于先进先出模型
            stack: 常用于后进先出的有序队列
  • 列表O(1)操作:

            append()
            extend()
            pop()
            insert() 
                插入方法插入时的时间是O(1),但导致其他元素的后移,所使用的时间更久.慎用.
  • 列表O(n)操作:

            count()
            index()
            remove()
            pop(index)
  • 列表复制:

            ==,内容,值比较
            is,内存地址比较,是否是同一对象
            = , 赋值,此赋值仅复制了对象的引用
            list.copy, 列表的第一次简单元素深复制,嵌套结构仅复制引用
            copy.deepcopy, 深复制,递归复制所有对象本身
    
            浅复制
                l1=l2
                l1=l2.copy()
            深复制
                l1=copy.deepcopy()
    
            示例;
                >>> l1=[1,2,3,[1]]
                >>> l1
                [1, 2, 3, [1]]
                >>> l2=l1             # 直接复制
                >>> l3=l1.copy()      # 使用列表方法复制
                >>> l1 
                [1, 2, 3, [1]]
                >>> l2
                [1, 2, 3, [1]]
                >>> l3
                [1, 2, 3, [1]]
                >>> l1[0]=100         # 修改第一层列表中元素
                >>> l1
                [100, 2, 3, [1]]
                >>> l2
                [100, 2, 3, [1]]
                >>> l3                # copy()复制的元素不变
                [1, 2, 3, [1]]
                >>> l1[-1][0]=100     # 修改嵌套在里面的列表中元素
                >>> l1
                [100, 2, 3, [100]]
                >>> l2
                [100, 2, 3, [100]]
                >>> l3                # l2,l3都被修改
                [1, 2, 3, [100]]
  • ==和is示例;

                >>> l1
                [1, 2, 3]
                >>> l2=l1
                >>> l3=l1.copy()
                >>> id(l1)
                140604879543624
                >>> id(l2)
                140604879543624
                >>> id(l3)              
                140604745250184
                >>> l1 == l2
                True
                >>> l1 == l3
                True
                >>> l1 is l2
                True
                >>> l1 is l3
                False
  • append()和extend()区别

            L.append(object) -> None
            L.extend(iterable) -> None
    
            append() 将对象附加至列表尾部
            extend() 将可迭代对象的元素附加至列表尾部
    
            >>> l1
            [1, 2, 3]
            >>> l2
            ['a', 'b', 'c']
            >>> l1.append(l2)           # 将l2列表作为一个对象附加至列表l1
            >>> l1
            [1, 2, 3, ['a', 'b', 'c']]
            >>> l1.extend(l2)           # 将l2中的元素逐个附加至列表l2
            >>> l1
            [1, 2, 3, ['a', 'b', 'c'], 'a', 'b', 'c']
  • [[0],[0],[0]] 和 0*n 区别

            >>> l1 = [[0],[0],[0]]    # 创建三个不同的对象
            >>> l1
            [[0], [0], [0]]
            >>> id(l1[0][0])          # 不同的内存地址
            8948000
            >>> id(l1[1][0])
            8947968
            >>> id(l2[0][0])         # 同一内存地址,也就是同一对象
            8948000
            >>> id(l2[1][0])
            8948000
            >>> l2 = `0`*3          # 创建三个同一对象
            >>> l2
            [[0], [0], [0]]
            >>> l1[0][0]=1
            >>> l1
            [[1], [0], [0]]
            >>> l2[0][0]=1
            >>> l2
            [[1], [1], [1]]

本文转自 撒旦搞时间 51CTO博客,原文链接:http://blog.51cto.com/12074120/1968034,如需转载请自行联系原作者
相关文章
|
2月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
58 1
|
5月前
|
索引 Python
Python错误 - 'list' object is not callable 的问题定位与解决
出现编程问题并不可怕,关键在于是否可以从中学习与成长。遇到'list' object is not callable这样的错误,我们不仅需要学会应对,更需要了解其背后的原因,避免类似的问题再次出现。记住,Python的强大功能和灵活性同时也意味着我们需要对其理解更准确,才能更好的使用它。
592 70
|
6月前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
|
9月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
243 66
|
10月前
|
存储 开发者 索引
Python 中常见的数据结构
这些数据结构各有特点和适用场景,在不同的编程任务中发挥着重要作用。开发者需要根据具体需求选择合适的数据结构,以提高程序的效率和性能
234 59
|
10月前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
246 59
|
10月前
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
225 55
|
9月前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
181 20
|
10月前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
188 33
|
9月前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
149 9

热门文章

最新文章

推荐镜像

更多