python 列表和元组有什么区别?
pythonprogrammingserver side programming更新于 2023/12/6 18:33:00
Python 中的列表和元组是数据结构。列表是动态的,而元组具有静态特性。
列表
列表是 Python 提供的四种最常用的数据结构之一。列表是 python 中可变且具有有序元素序列的数据结构。以下是整数值列表 −
lis= [1,2,3,4,5] print(lis)
如果执行上述代码片段,它会产生以下输出 -
[1, 2, 3, 4, 5]
元组
元组是 Python 对象的集合,这些对象用逗号分隔,有序且不可变。元组是序列,就像列表一样。元组和列表之间的区别在于,元组不能像列表那样更改,并且元组使用括号,而列表使用方括号。
tup=('tutorials', 'point', 2022,True) print(tup)
如果执行上述代码片段,它会产生以下输出 -
('tutorials', 'point', 2022, True)
在本文中,我们讨论了 Python 中列表和元组之间的区别。
列表和元组之间的区别
以下是列表和元组之间的主要区别 -
列表 | 元组 |
---|---|
列表是可变的 | 元组是不可变。 |
列表占用更多空间。 | 与列表相比,元组占用更少的空间。 |
迭代的实现需要时间。 | 迭代的实现相对较快。 |
列表具有许多内置函数。 | 元组没有任何内置方法。 |
插入和删除等操作在列表中表现更好。 | 对于访问元素,元组表现更好。 |
列表中经常发生不可预测的变化和错误。 | 在元组中,很难发生这种情况。 |
可变与不可变
列表是可变的,而元组是不可变的,这意味着我们可以修改或更改列表的值,但我们不能在元组中这样做。
以下示例演示了在这种情况下列表和元组之间的区别。
示例:列表
以下示例演示了 python 列表的用法。
list = ["Meredith", "Levi", "Wright", "Franklin"] list[1]= "Kristen" print(list)
输出
['Meredith', 'Kristen', 'Wright', 'Franklin']
示例:元组
现在,让我们看一下元组的示例。
tuple = ("Meredith", "Levi", "Wright", "Franklin") tuple[1]= "Kristen" print(tuple)
输出
Traceback (most recent call last): File "main.py", line 2, in <module> tuple[1]= "Kristen" TypeError: 'tuple' object does not support item assignment
内存分配
由于元组是不可变的,因此 Python 会以较低的开销分配较大的内存块。另一方面,Python 为列表分配较小的内存块。因此,元组的内存将比列表少。当元素数量较多时,这会使元组比列表更节省空间。
示例
在下面的示例中,我们可以看到相同数据占用的空间差异。
list= ['Meredith', 'Kristen', 'Wright', 'Franklin'] tuple = ("Meredith", "Kristen", "Wright", "Franklin") print("Memory occupied by a list") print(list.__sizeof__()) print("Memory occupied by a tuple") print(tuple.__sizeof__())
输出
Memory occupied by a list 72 Memory occupied by a tuple 56
复制与可重用性
元组不能被复制或拷贝。因为元组不能改变(不可变)。如果你输入 tuple(tuple name),它会立即返回自身。
示例
names = ("Meredith", "Kristen", "Wright", "Franklin") copy = tuple(names) print(names is copy)
输出
以上代码返回 true,这意味着元组的名称和副本相同。
True
示例 2
names = ["Meredith", "Kristen", "Wright", "Franklin"] copy = list(names) print(names is copy)
输出
由于列表可以被复制,代码返回 false。
False