列表与元组
列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。
元组是静态的,长度大小固定,无法增加删减或者改变(immutable)。
如果想对已有的元组做任何"改变",就只能重新开辟一块内存,创建新的元组。
对于列表来说加入元素会修改原来列表中的元素,而不会创建新的列表。
Python 中的列表和元组都支持负数索引。
除了基本的初始化,索引外,列表和元组都支持切片操作。
列表和元组都可以随意嵌套。
两者也可以通过 list() 和 tuple() 函数相互转换。
list((1, 2, 3))
tuple([1, 2, 3])
内置函数
l = [3, 2, 3, 7, 8, 1]
l.count(3) # count(item) 表示统计列表 / 元组中 item 出现的次数。
l.index(7) # 示返回列表 / 元组中 item 第一次出现该值的索引。
l.reverse()
l.sort()
tup = (3, 2, 3, 7, 8, 1)
tup.count(3)
tup.index(7)
# reversed() 和 sorted() 表示对列表 / 元组进行倒转和排序
# reversed() 返回一个倒转后的迭代器
# sorted() 返回排好序的新列表。
list(reversed(tup))
sorted(tup)
列表是动态的,所以需要存储指针,来指向对应的元素。
由于列表可变,所以需要额外存储已经分配的长度大小(8 字节),这样才可以实时追踪列表空间的使用情况。
当空间不足时,及时分配额外空间。
元组长度大小固定,元素不可变,所以存储空间固定。
元组要比列表更加轻量级一些,性能速度要略优于列表。
如果想要增加、删减或者改变元素,那么列表显然更优。对于元组必须得通过新建一个元组来完成。
如果存储的数据和数量不变,比如你需要返回的是一个地点的经纬度,然后直接传给前端渲染,那么肯定选用元组更合适。
如果存储的数据或数量是可变的,比如社交平台上的一个日志功能,是统计一个用户在一周之内看了哪些用户的帖子,那么则用列表更合适。
列表与元组总结
列表和元组都是有序的,可以存储任意数据类型的集合,区别主要在于下面这两点。
- 列表是动态的,长度可变,可以随意的增加、删减或改变元素。
- 列表的存储空间略大于元组,性能略逊于元组。元组是静态的,长度大小固定,不可以对元素进行增加、删减或者改变操作。元组相对于列表更加轻量级,性能稍优。
网友评论