1、不同
列表:
(1)动态,长度大小不固定,可进行增删改操作。
同时需要存储指针来指向对应元素,还需要额外存储已经分配的长度大小
python每次分配空间时会额外多分配一些,这样的机制(over-allocating)保证了其操作高效性,增加/删除时间复杂度均为O(1)
(2)列表存储空间略大于元组,性能略逊于元组
元组:
(1)静态,长度大小固定,不可改变
tuple为array结果,不过python对其进行了优化,比如:
在当tuple长度小于20时,python不会把它进行回收,而是把它缓存在内部的free list中。这样,如果以后再去创建同样的tuple直接在python缓存中载入,无需重新申请内存空间,大大提高了运行效率。
(2)元组相对于列表更轻量级,元组性能略优于列表
2、相同
(1)都支持负索引
(2)都支持切片操作
(3)都可以随意嵌套
(4)可通过list() tuple()转换
(5)内置函数:count() index() list.reverse()和list.sort()分别表示原地倒转列表和原地排序(元组无这两个函数);reversed()和sorted()同样表示对元组和列表进行倒转和排序,reversed()返回倒转后的迭代器,sorted()返回排好序的新列表