Python 中最常见的两种数据结构:列表(list)和元组(tuple)
1、列表是动态的,长度不固定,可以增加,删除,改变元素 2、元组是静态的,长度固定,无法增加,删除,改变
一、修改列表和元组
1
2
3
4
5
6
7
8
9
tup = (1,2,3,4)
new_tup = tup + (5,)
print (new_tup)
结果:(1,2,3,4,5)
l = [1,2,3,4]
l.append(5)
print(l)
结果:[1,2,3,4,5]
二、列表和元组索引 ```-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。 l = [1, 2, 3, 4] print(l[-1]) 4
tup = (1, 2, 3, 4) print(tup[-1]) 4
1
2
三、切片
list = [1, 2, 3, 4] l[1:3] # 返回列表中索引从 1 到 2 的子列表 [2, 3]
tup = (1, 2, 3, 4) tup[1:3] # 返回元组中索引从 1 到 2 的子元组 (2, 3)
1
2
当然,两者也可以通过 list() 和 tuple() 函数相互转换
list((1, 2, 3)) [1, 2, 3]
tuple([1, 2, 3]) (1, 2, 3)
1
2
3
4
5
6
四、内置函数
* count(item) 表示统计列表/元组中item出现的次数。
* index(item) 表示返回列表/元组中item第一次出现的索引。
* list.reverse() 和 list.sort() 分别表示原地倒转列表和排序列表(元组没有)。
* reversed() 和 sorted() 同样表示对列表/元组进行倒转和排序,但是会返回一个倒转后或者排好序的新的列表 / 元组。
l = [3, 2, 3, 7, 8, 1] l.count(3) 2 l.index(7) 3 l.reverse() l [1, 8, 7, 3, 2, 3] l.sort() l [1, 2, 3, 3, 7, 8]
tup = (3, 2, 3, 7, 8, 1) tup.count(3) 2 tup.index(7) 3 list(reversed(tup)) [1, 8, 7, 3, 2, 3] sorted(tup) [1, 2, 3, 3, 7, 8]
```
五、列表与元组存储差异
- 1、列表是动态的,所以它需要存储指针,来指向对应的元素。
- 2、由于列表可变,所以需要额外存储已经分配的长度大小,这样才可以实时追踪列表空间的使用情况,当空间不足时,及时分配额外空间。
- 3、元组要比列表更加轻量级一些,所以总体上来说,元组的性能速度要略优于列表。
六、列表与元组使用场景
- 1、如果存储的数据与数量不变,那么远用元组更合适。
- 2、如果存储的数据或数量是可变的,那么则用列表更为合适
七、总结 列表与元组都是有序的,可以存储任意数据类型的集合,区别在于:
- 列表是动态的,长度可变,可以随意增加、删减或改变元素,列表的存储空间略大于元组,性能略逊于元组。
- 元组是静态的,长度大小固定,不可以对元素进行增加、删减或者改变操作。元组相对列表更加轻量级,性能稍优。