集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都python培训哪个好-python列表和元组分享

发布者: 成都达内     浏览次数:     发布时间:2020-05-28 13:47:27

今天开始来写Python基础方面(基础中附带进阶知识)的知识,虽说是基础,但是很多小伙伴可能也不能完全熟练掌握这些知识点。成都python培训哪个好?今天我们来讲的是python中的列表和元...

  前言

  今天开始来写Python基础方面(基础中附带进阶知识)的知识,虽说是基础,但是很多小伙伴可能也不能完全熟练掌握这些知识点。成都python培训哪个好?今天我们来讲的是python中的列表和元组。

  列表和元组

  不管我们学习什么语言都会有集合这个概念。列表和元组就是有序集合。在集合里我们可以放置任意的数据类型,像一些字符串、整数、对象等等。当然有一些语言里的集合需要同一类型才行,但是在Python中就没有这个限制。

  1.初印象

  说了这么多,大家可能还是不知道啥是列表,啥是元组,直接看我下面的例子:

  >>> l = [1,2,'a','b']>>> l[1, 2, 'a', 'b']>>> tup = (1,2,'a','b')>>> tup(1, 2, 'a', 'b')

  成都python培训哪个好-python列表和元组分享

  我们在编辑器中定义了一个列表l和一个元组tup,然后填入了相应的数据。相信大家看到这里就对元组和列表有个初印象了。

  2.两者区别

  相信大家内心有个疑问,都是能够放入不同类型的集合,那有啥区别?

  列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素

  元组是静态的,长度大小固定,无法增加删减或者改变

  直接上例子给大家看看:

  >>> l[1] = 100>>> l[1, 100, 'a', 'b']>>> tup[1] = 100Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment

  成都python培训哪个好-python列表和元组分享

  大家可以看到,我们将list中索引值为1的值改为100是成功的,但是去修改元组时就报错了。

  但是,这里就引申了一个问题---如何修改元组的值

  唯一的办法就是开辟一块新的内存空间,说简单点就是你需要重新创建一个元组,然后拼接上去。例如我想在tup上新增一个数字100:

  >>> tup1 = tup+(100,)>>> tup1(1, 2, 'a', 'b', 100)

  成都python培训哪个好-python列表和元组分享

  看上去就比较难受,所以该用啥时就用啥,list它不香吗?

  3.list和tuple的骚操作

  其实这里讲的就是list和tuple里一些内置函数。我直接通过代码的形式来给大家讲解了。

  3.1 负索引

  >>> l[1, 100, 'a', 'b']>>> tup(1, 2, 'a', 'b')>>> l[-1]'b'>>> tup[-1]'b'

  大家可以看到列表和元组都支持负索引,简单点说就是一个倒着的索引,可以反向取值。

  -1表示倒数第一个值,-2表示倒数第二个值....

  3.2 切片操作

  >>> l[1:3][100, 'a']>>> tup[1:3](2, 'a')

  大家看到上面的代码,可以发现我们可以获取列表或者元组中某个区间的值,这就是切片操作。

  3.3 count()

  >>> l = [1,2,3,3,3,4,4,4,4,12]>>> l.count(3)3>>> l.count(4)4>>> tup.count(1)1

  计算出list或者tuple中元素出现的次数

  3.4 index()

  >>> l = [1,2,3,3,3,4,4,4,4,12]>>> l.index(12)9>>> tup(1, 2, 'a', 'b')>>> tup.index(2)1

  返回某值得索引值

  3.5 reverse()

  >>> l[1, 2, 3, 3, 3, 4, 4, 4, 4, 12]>>> l.reverse()>>> l[12, 4, 4, 4, 4, 3, 3, 3, 2, 1]

  将列表中的数据逆序排列。大家可能注意到元组是没有这个函数的,是因为元组不可以改变其内容。

  但是也还是有办法将元组逆序,只不过需要转化为list。

  3.6 sorted()

  >>> l=[2,3,1,123,33,23]>>> sorted(l)[1, 2, 3, 23, 33, 123]

  将列表安装顺序排序。

  4.list和tuple的存储方式和性能

  首先我们来看一段代码:

  >>> l = [1,2]>>> tup=(1,2)>>> l.__sizeof__()56>>> tup.__sizeof__()40

  我们可以发现列表比元组大了16个字节,为什么呢?原因在于list是属于动态的,就类似链表,需要一个空间来存储指针(学过C语言的朋友应该很熟悉),存储指针花了8个字节,另外8个字节是存储已经分配的长度大小,因为列表属于可变的,我们需要随时知道它的空间大小情况。

  >>> l = []>>> l.__sizeof__()40# 第一次变化>>> l.append(1)>>> l.__sizeof__()72>>> l.append(2)>>> l.__sizeof__()72>>> l.append(3)>>> l.__sizeof__()72>>> l.append(4)>>> l.__sizeof__()72# 第二次发生变化>>> l.append(5)>>> l.__sizeof__()104

  重点:大家看到上面的代码可以发现,当我们给列表添加一个数据时,会为我们提供32个字节的存储空间,换算成int 8字节,也就是提供了4个int值得空间给我们,所以我们在添加4个数据之前,存储空间都是没有发生变化的,直到第五个值又给我们分配了32个字节。

  关于它的存储我们就了解的差不多了,显而易见哪个的性能好。元组因为是不能够改变的,所以他所分配的存储空间也是固定的,所以元组的性能会比列表更好一筹。但是,这个得根据你实际开发情况而定。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56