python列表和元组使用实例分析


这篇文章主要讲解了“python列表和元组使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python列表和元组使用实例分析”吧! 在我们实际开发中,经常需要将一组数据存储起来,以便使用。如果学习了其他的语言可能知道数组(Array)这个数据结构,它就可以将多个数据进行存储,访问数据可以通过数组下标的方式,的进行获取。如果你是python开发者,那么可以使用更加灵活的列表(list)和元组(tuple),来进行数据储存。下面我们先简单了解下列表和元组的基本使用。列表是动态的,长度可以改变,可以随意增加,修改或删除元素。append:在列表的末尾添加一个元素extend:使用可迭代对象中的所有元素来扩免费云主机域名展列表insert:在给定的位置插入一个元素。第一个参数是要插入的元素的索引,所以 list_name.insert(0, x) 插入列表头部remove(x):从列表中删除值为x的第一项。 如果没有需要删除的值,那就抛出异常pop: 删除列表中给定位置的元素并返回它。如果没有给定位置,pop() 将会删除并返回列表中的最后一个元素del: Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素clear(): 移除列表中的所有元素。等价于 del a[:]ps: 这里注意和del 的区别, clear是清空, del list_name 是删除,内存也释放修改单个可以通过下标的方法修改一组数据可以通过切片的方式index(x) :方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误count() :用来统计某个元素在列表中出现的次数sort:对列表中的元素进行排序reverse: 反转元素copy: 返回列表的一个浅拷贝,等价于 a[:]栈(stack)特点就是后进先出, 使用列表实现是非常容易的,要添加一个元素到堆栈的顶端,使用 append() 。要从堆栈顶部取出一个元素,使用 pop() ,不用指定索引。返回结果返回元组是静态,大小固定,不可以对元素进行增加,修改或删除的操作返回结果返回结果元组修改列表修改通过上面可以发现元组是不可以改变的,这里强调一点很多新手对这个 l = l + (5,6) 很不难理解,不是说元组不可以修改的吗,那为什么这里可以修改?记住这里虽然可以执行,但是他是创建了一个新的元组,这时候的 l 不是原来的 l, 可以通过 id 查询(或则执行 l[0] = -1 就会报错)在这里我多说几句,这里的静态和动态,大白话来讲是列表是可以进行列表的操作(新增,删除,修改),一般操作行为下他的内存地址不变(通过id查看),这和他的实现有关,但是元组就会改变,所以新的元组和原来的不一样,一般时候有人(面试官或则开发不小心)会问你 a = ([1,2], 3,4), 为什么可以进行a[0].append(3),但是id(a)前后不变,这就是0下标的元素是列表,列表可以修改的。返回结果看到结果有没有发现列表比元组大18字节,那么问题来了:这18字节是怎么来的?这是由于列表是动态的,它需要存储指针来指向对应的元素(占用 8 个字节)。另外,由于列表中元素可变,所以需要额外存储已经分配的长度大小(占用 8 个字节),这样才能实时追踪列表空间的使用情况。但是对于元组,情况就不同了,元组长度大小固定,且存储元素不可变,所以存储空间也是固定的。执行结果从上面的结果可以发现元组是可以被hash,但列表却是不可以。如果基础扎实的应该会反应过来,python中hash需要满足是不可变类型的数据结构(字符串str、元组tuple、对象集objects)上面的运行结果显示: 元组初始化远快于列表 ,大概有五倍的差距,但是索引操作的时候速度没有多大差距截止目前为止,我们可以简单总结列表和元组的区别有如下:元组使用tuple()或()初始化,列表使用list()或[]初始化元组是静态,而列表是动态列表需要更多内存,元组需要更少内存列表不可被hash,元组可以被hash元组初始化效率高于列表,但索引操作没有多大差距再说使用场景前先讲一下,在python后台,对静态数据做一些资源缓存,通常因为垃圾回收机制的存在,一些变量不使用,python就会回收他们所占的内存,但是对于一些静态变量(比如说元组),当他们占用不大时候(长度1~20的元组),python会暂时缓存这部分内存,这样下次就可以不再向操作系统发出请求,分配内存资源,而是直接使用用缓存中之前的内存空间,这样大大加快了程序的运行速度。所以一般有时候数据量不大,我经常使用元组替代列表。到目前为止我们可以简单的总结出场景可以如下所示:如果数据不可变,我们就可以考虑使用元组,比如说性别类型,返回出去的城市信息等等如果数据可变,我们就考虑使用列表,比如说用户当天访问的网页等等通过上面的测试可以知道是[]快。list()函数调用,python中函数调用会创建stack并且会进行参数检查,[]是一个内置C函数,可以直接调用,因此效率更高。从结果可以看出是*效率会低点。*= 中会预分配,不足的时候扩容,但是* 会按照每次的量进行分配大小结果list_2为什么输出是[2,4]? 因为在第一次删除后,list_2变成了 [2,3,4], 然后在删除轮循到到第二个数据也就是3(大部分都以为是2,但是2从原来的下表2变为1),可以参看下面的list_3 为什么是[], 还记得之前我们说copy时候,copy等于[:](浅拷贝),所以轮询的和删除的不是同一内存的数据。list_4可以结合list_2思考,因为第一次删除,第二次删除是下标2,但是数据变了,下标2的数据不是原来的2,而是3感谢各位的阅读,以上就是“python列表和元组使用实例分析”的内容了,经过本文的学习后,相信大家对python列表和元组使用实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: 开发人员最常用的HTML5代码生成器有哪些

这篇文章主要介绍“开发人员最常用的HTML5代码生成器有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“开发人员最常用的HTML5代码生成器有哪些”文章能帮助大家解决问题。   Shikiryu HTML5生成器  …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/10 16:15
下一篇 01/10 16:15

相关推荐