tuple 和 list 相似,本质也是一个数组,但是空间大小固定。不同于一般数组,Python 的 tuple 做了许多优化,来提升在程序中的效率。
举个例子,为了提高效率,避免频繁的调用系统函数 free 和 malloc 向操作系统申请和释放空间,tuple 源文件中定义了一个 free_list
所有申请过的,小于一定大小的元组,在释放的时候会被放进这个 free_list 中以供下次使用。也就是说,如果以后需要再去创建同样的 tuple,Python 就可以直接从缓存中载入。
元组内置方法
1)cmp(tuple1, tuple2):比较两个元组元素。 2)len(tuple):计算元组元素个数。 3)max(tuple):返回元组中元素最大值。 4)min(tuple):返回元组中元素最小值。 5)tuple(seq):将列表转换为元组。
元祖和列表区别
元祖可以作为字典的key而存在
列表和元组的区别是显然的: 列表是动态的,其大小可以该标 (重新分配); 而元组是不可变的,一旦创建就不能修改。
list和tuple在c实现上是很相似的,对于元素数量大的时候, 都是一个数组指针,指针指向相应的对象,找不到tuple比list快的理由。 但对于小对象来说,tuple会有一个对象池,所以小的、重复的使用tuple还有益处的。
为什么要有tuple,还有很多的合理性。 实际情况中的确也有不少大小固定的列表结构,例如二维地理坐标等; 另外tuple也给元素天然地赋予了只读属性。