一文搞懂Python List和Tuple的区别
作者:烛阴
list和tuple都是可迭代对象中的容器序列,能够存放不同类型的数据,并且存的是它们所包含的任意类型的对象的引用,这算是两者之间的一个相同点,本文详细给大家介绍了Python List和Tuple的区别,需要的朋友可以参考下
一、List和Tuple的基本概念
- List(列表):是 Python 内置的一种数据类型。 它是一种有序的集合,可以随时添加和删除其中的元素。
- Tuple(元组):也是 Python 内置的一种数据类型。不可变的有序集合,一旦创建,元素不可更改。
示例代码:
my_list = [1, 2, 3] my_tuple = (1, 2, 3)
- 注意:元组中只包含一个元素时,需要在元素后面添加逗号,
my_tuple=(123,)
,如果不加逗号,创建出来的就不是 元组(tuple),而是指123
这个数了。这是因为括号 () 既可以表示元组(tuple),又可以表示数学公式中的小括号,这就产生了歧义。
二、核心区别一览表
特性 | List(列表) | Tuple(元组) |
---|---|---|
可变性 | 可变 | 不可变 |
语法 | [1, 2, 3] | (1, 2, 3) |
占用内存 | 较大 | 较小 |
速度 | 较慢 | 较快 |
是否可哈希 | 否 | 是 |
适用场景 | 需要修改数据 | 不需要修改数据 |
三、List和Tuple的高效用法
1. List的高效操作
- 批量添加元素
my_list.extend([4, 5, 6])
- 列表推导式
squares = [x**2 for x in range(10)]
- 删除元素
my_list.remove(2) # 删除值为2的元素 del my_list[0] # 删除第一个元素
常用函数&方法
函数&方法 | 描述 |
---|---|
len(list) | 列表元素个数 |
max(list) | 返回列表元素最大值 |
min(list) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop(obj=list[-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中的一个元素(参数是列表中元素),并且不返回任何值 |
list.reverse() | 反向列表中元素 |
list.sort([func]) | 对原列表进行排序 |
2. Tuple的隐藏优势
- 作为字典的键
my_dict = {('x', 1): 'value1', ('y', 2): 'value2'}
- 解包赋值
a, b, c = (1, 2, 3)
- 函数返回多个值
def get_point(): return (3, 4) x, y = get_point()
四、List和Tuple的性能对比
Tuple的访问速度比List快!因为Tuple是不可变的,Python可以对其做更多优化。
性能测试:
import timeit print(timeit.timeit(stmt="[1,2,3,4,5]", number=1000000)) print(timeit.timeit(stmt="(1,2,3,4,5)", number=1000000))
五、到底该用List还是Tuple?
- 需要频繁修改数据? 用List!
- 数据不会变,追求性能和安全? 用Tuple!
- 要做字典的key? 只能用Tuple!
六、你可能忽略的细节
- 单元素Tuple要加逗号:
(1,)
- Tuple可以嵌套List,但List不能作为字典的key
总结
到此这篇关于一文搞懂Python List和Tuple的区别的文章就介绍到这了,更多相关Python List和Tuple区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!