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,如需转载请自行联系原作者
相关文章
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
713 0
|
8月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
345 4
|
9月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
索引 Python
Python错误 - 'list' object is not callable 的问题定位与解决
出现编程问题并不可怕,关键在于是否可以从中学习与成长。遇到'list' object is not callable这样的错误,我们不仅需要学会应对,更需要了解其背后的原因,避免类似的问题再次出现。记住,Python的强大功能和灵活性同时也意味着我们需要对其理解更准确,才能更好的使用它。
1604 70
|
11月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
689 1
|
存储 开发者 索引
Python 中常见的数据结构
这些数据结构各有特点和适用场景,在不同的编程任务中发挥着重要作用。开发者需要根据具体需求选择合适的数据结构,以提高程序的效率和性能
605 156
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
564 153
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
509 66

热门文章

最新文章

推荐镜像

更多