[雪峰磁针石博客]python经典面试题:列表和元组有什么异同?

简介:

列表和元组是Python中最常用的两种数据结构,字典是第三种。 相同点:

  • 都是序列
  • 都可以存储任何数据类型
  • 可以通过索引访问

图片.png

语法差异

使用方括号[]创建列表,而使用括号()创建元组。 请看以下示例:

>>> l = ["https://china-testing.github.io/", "https://www.oscobo.com/"]
>>> t = ("https://china-testing.github.io/", "https://www.oscobo.com/")
>>> print(l)
['https://china-testing.github.io/', 'https://www.oscobo.com/']
>>> print(t)
('https://china-testing.github.io/', 'https://www.oscobo.com/')
>>> print(type(l))
<class 'list'>
>>> print(type(t))
<class 'tuple'>

是否可变

列表是可变的,而元组是不可变的,这标志着两者之间的关键差异。

我们可以修改列表的值,但是不修改元组的值。

由于列表是可变的,我们不能将列表用作字典中的key。 但可以使用元组作为字典key。

>>> l[1] = "https://www.jianshu.com/u/69f40328d4f0"
>>> l
['https://china-testing.github.io/', 'https://www.jianshu.com/u/69f40328d4f0']
>>> t[1] = "https://www.jianshu.com/u/69f40328d4f0"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

重用与拷贝

元组无法复制。 原因是元组是不可变的。 如果运行tuple(tuple_name)将返回自己。

>>> copy_t = tuple(t)
>>> print(t is copy_t)
True
>>> copy_l = list(l)
>>> print(l is copy_l)
False

参考资料

大小差异

Python将低开销的较大的块分配给元组,因为它们是不可变的。 对于列表则分配小内存块。 与列表相比,元组的内存更小。 当你拥有大量元素时,元组比列表快。列表的长度是可变的。


>>> l = ["https://china-testing.github.io/", "https://www.oscobo.com/"]
>>> t = ("https://china-testing.github.io/", "https://www.oscobo.com/")
>>> print(l.__sizeof__())
56
>>> print(t.__sizeof__())
40

同构与异构

习惯上元组多用于用于存储异构元素,异构元素即不同数据类型的元素,比如(ip,port)。 另一方面,列表用于存储异构元素,这些元素属于相同类型的元素,比如[int1,in2,in3]。

相关文章
|
3天前
|
BI Python
深入浅出:讲解Python中的列表推导式
深入浅出:讲解Python中的列表推导式
|
3天前
|
监控 PHP Python
1688快速获取整店铺列表 采集接口php Python
在电子商务的浪潮中,1688平台作为中国领先的批发交易平台,为广大商家提供了一个展示和销售商品的广阔舞台;然而,要在众多店铺中脱颖而出,快速获取商品列表并进行有效营销是关键。
|
4天前
|
算法 Python
Python中不使用sort对列表排序的技术
Python中不使用sort对列表排序的技术
16 1
|
4天前
|
Python
【Python 基础】列表(list)和元组(tuple)有什么区别?
【5月更文挑战第6天】【Python 基础】列表(list)和元组(tuple)有什么区别?
|
4天前
|
算法 Python
从原始边列表到邻接矩阵:使用Python构建图的表示
从原始边列表到邻接矩阵:使用Python构建图的表示
8 0
|
4天前
|
机器学习/深度学习 存储 数据挖掘
Python中遍历并修改列表的综合指南
Python中遍历并修改列表的综合指南
13 2
|
5天前
|
机器学习/深度学习 自然语言处理 Python
python分词列表转化成词向量
python分词列表转化成词向量
11 1
|
5天前
|
算法 数据处理 Python
Python技术分享:如何将数据列表中的空值补0
Python技术分享:如何将数据列表中的空值补0
13 1
|
5天前
|
数据处理 Python
Python中按指定数量分割列表字符串的方法
Python中按指定数量分割列表字符串的方法
9 1
|
11天前
|
数据挖掘 数据处理 Python
【亮剑】介绍了Python中以表格格式打印列表的三种方法
【4月更文挑战第30天】本文介绍了Python中以表格格式打印列表的三种方法:1) 使用字符串格式化,适用于简单场景;2) 使用prettytable库,适合需要更多格式化选项的情况;3) 使用pandas库,适用于处理大量数据和复杂分析。根据需求选择合适的方法来展示数据。