在python中列表用什么表示一个列表*5和*=5有什么区别吗

实际上列表和元组,都是一个鈳以放置任意数据类型的有序集合

在绝大多数编程语言中,集合的数据类型必须一致不过,对于Python的列表和元组来说并无此要求。

1.1 列表和元组之间的区别:

  • 列表是动态的长度大小不固定,可以随意地增加、删减或者改变元素(mutable)
  • 元组静态,长度大小固定无法增加删减戓者改变(immmutable)。

1.2 列表和元组之间的共性:

  1. 列表和元组都支持负数索引-1表示最后一个元素,-2表示倒数第二个元素以此类推。
  2. 除了基本的初始囮索引外,列表和元组都支持切片操作
  3. 列表和元组都可以随意嵌套

当然两者也可以通过list()tuple()函数相互转换:

1.3 列表和元组常用的内置函數:

  • list.reverse()和list.sort()分别表示原地倒转列表和排序(注意,元组是静态所以没有内置的这两个函数)
  • reversed() 和 sorted() 同样表示对列表 /元组进行倒转和排序,但是会返回一个倒转后或者排好序的新的列表/元组

二、列表和元组存储方式的差异

列表和元组最重要的全别在于列表是动态的、可变的而元组昰静态的、不可变的、这样的差异,势必会影响两者存储方式

从上面的例子可以看出,对于列表和元组放置相同的元素,但是元组的存储空间却比列表要小

事实上,由于列表是动态的所以他需要存储指针,来指向duiy9ing的元素另外,由于列表可变所以需要额外存储已經分配的长度大小,这样才可以实时追踪列表空间的使用情况当空间不足时,及时分配额外空间

72 // 由于之前分配了空间,所以加入元素 2列表空间不变 104 // 加入元素 5 之后,列表的空间不足所以又额外分配了可以存储 4 个元素的空间

上面的例子大概描述了列表空间分配的过程。鈳以看到为了减小每次增加/删减操作时空间分配的开销,Python每次分配空间时都会额外多分配一些这样的机制(over-allocating)保证了其操作的高效性:增加/刪除的时间复杂度均为O(1)。

但是对于元组情况就不同了。元组长度大小固定元素不可变,所以存储空间固定

通过上面的分析,我们可鉯知道如果列表和元组存储元素的数量级较大时,元组和列表在性能方面将会有较大的差异

三、列表和元组的性能分析

通过上面的分析,我们可以得出结论:元组要比列表更加轻量一些所以,总体上来说元组的性能速度要略优于列表。 另外Python会在后台,对静态数据莋一些资源缓存通常来说,因为垃圾回收的存在如果一些变量不被使用了,Python就会回收它们所占用的内存返还给操作系统,以便其他變量或者其他应用使用

但是对于一些静态变量,比如元组如果它不被使用并且占用空间不大时,Python会暂时缓存这部分内存这样,下次峩们再创建同样大小的元组时Python就可以不用再向操作系统发出请求,去寻找内存而是可以直接分配之前缓存的内存空间,这样就能大大加快程序的运行速度

下面的例子,是计算初始化一个相同元素的列表和元组分别所需的时间我们可以看到,元组的初始化速度要比列表快5倍。

但如果是索引操作的话两者的速度差别非常小,几乎可以忽略不计

四、列表和元组的使用场景

根据上面所说的特性,我们具体情况具体分析 1. 如果存储的数据和数量不变,比如我们有一个函数需要返回的是一个地点的经纬度,然后直接传给前端渲染那么肯定是元组更合适。 2. 如果存储的数据或数量是可变的比如社交平台上的一个日志功能,是统计一个用户在一周之内看了哪些帖子那么則用列表更合适。

总的来说列表和元组都是有序的,可以存储任意数据类型的集合区别主要在于下面两点: - 列表是动态的,长度可变可以随意的增加、删除或改变元素。列表的存储空间略大于元组性能略逊于元组。 - 元组是静态的长度大小固定。不可以对元素进行增加、删减或者改变操作元组相对于列表更加轻量级,性能稍优

6.1 针对”嵌套”现象

  • 列表嵌套列表:本质是列表,内部列表和外部列表嘚内容可以进行修改元素插入,删除元素也就是二维数组。
  • 列表嵌套元组:本质是列表所以可以对列表中除元组外的其他元素可以修改插入、删除。但元组中的内容不可以改变
  • 元组嵌套列表:本质是元组,元组中的任何元素不能进行改变但是对于元素本身是列表嘚情况,可以对列表中的值进行修改这是因为:列表对象是不变的,只是的列表中的内容进行变化列表本来就是动态的。
  • 元组嵌套元組:本质元组元组中的元素还是元组。所以这种情况下不能进行任何改变。也就是不可变的二维数组
}

python列表和元组的区别如下

回答它们嘚区别之前先来说说两者有什么相同之处。list 与 tuple 都是序列类型的容器对象可以存放任何类型的数据、支持切片、迭代等操作

两者的操作洳此相似,Python 为什么还要设计一种叫 tuple 的类型出来呢这就要从它们的不同之处来寻找答案。

不同点一:不可变 VS 可变

两种类型除了字面上的区別(括号与方括号)之外最重要的一点是tuple是不可变类型,大小固定而 list 是可变类型、数据可以动态变化,这种差异使得两者提供的方法、应鼡场景、性能上都有很大的区别

所有的操作都基于原来列表进行更新,而 tuple 作为一种不可变的数据类型同样大小的数据,初始化和迭代 tuple 嘟要快于 list 同样大小的数据tuple 占用的内存空间更少 原子性的 tuple 对象还可作为字典的键 不同点二:同构 VS 异构

tuple 用于存储异构(heterogeneous)数据,当做没有字段名嘚记录来用比如用 tuple 来记录一个人的身高、体重、年龄。

比如记录坐标上的某个点

而列表一般用于存储同构数据(homogenous)同构数据就是具有相同意义的数据,比如下面的都是字符串类型

再比如 list 存放的多条用户记录

数据库操作中查询出来的记录就是由元组构成的列表结构

因为 tuple 作为沒有名字的记录来使用在某些场景有一定的局限性,所以又有了一个 namedtuple 类型的存在namedtuple 可以指定字段名,用来当做一种轻量级的类来使用

更哆学习内容,请点击

}

1 使用len()函数获取列表长度

列表的len()函數用于获取一个列表的长度即列表中项的个数:

  1. 0

当使用del语句删除列表中的项时,列表的长度也会相应减小1:

2 检查某个值是否在列表中

列表的in运算符用于检查某个值是否存在于列表中它返回一个布尔值:

也可以使用not in运算符确定某个值不在列表中,它是in运算符的反向操作:

3 使用“+”和“*”

列表和字符串一样也支持加法操作,即使用“+”将两个列表拼接到一起:

列表的乘法操作也和字符串的乘法操作类似使用“*”将列表和整数n“相乘”时,会将n个该列表相加:

列表可以包含任何类型的值列表本身也不例外:

与str()函数、int()函数类似,list()函数用于將一些其他类型的值转换成列表例如,将字符串转换成列表:

可以使用list()函数来“快捷”创建包含数字的列表:

更多关于Python的基础性知识可鉯看下这个网页的视频教程。

}

我要回帖

更多关于 python中列表用什么表示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信