python 元组和列表的区别


Posted in Python onDecember 30, 2020

静态数据类型

静态数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的静态数据类型有字符串,元组。

python 元组和列表的区别

在使用[]操作符对字符串,元组进行修改时,Python会抛出类型错误的异常信息,我们可以在交互模式中进行验证:

>>> content = "static data type"
>>> content[0]=S
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'S' is not defined
>>> numbers = (1,2,3,4,5)
>>> numbers[0] = 6
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

可变数据类型

与静态数据类型相对的是可变数据类型,在可变数据类型中,可以对集合中的元素进行修改。列表,以及在后面将要介绍的复合数据类型:字典,集合,类类型等,都是可变的数据类型。我们同样可以在交互模式中进行验证:

>>> numbers = [1,2,3,4,5]
>>> id(numbers)
2749153235976
>>> numbers[0]=6
>>> numbers
[6, 2, 3, 4, 5]
>>> id(numbers)
2749153235976

从交互模式的输出中可以分析出,可以通过[]操作符列表类型进行修改。修改后的列表与修改前的列表,它们具有相同的id值,说明是同一个列表。

执行内置的id函数可以输出id值,id值即内存地址。

元组与列表的区别

在使用元组的场景中,都可以使用列表来进行代替,那么为什么还要定义元组这种数据类型?在本小节的内容中,通过两个方面来进行分析:

(1) 元组是静态,只读的数据类型

元组与列表的核心区别在于,元组是静态的,列表是动态的, 可变的。我们在定义变量时,如果该数据对象具备静态,只读的属性,应当使用元组,否则应当使用列表。以生活中的购物清单来进行举例,在购物清单中,我们可以随时对清单进行修改,比如添加某一个商品,或从购物车中移除某一个商品。
购物清单是可修改的,动态的,现在通过Python代码进行模拟:

# __desc__ = 通过Python代码模拟购物清单的添加和删除
 
# 定义shopping_list,表示购物清单
shopping_list = ["消毒液", "口罩", "白酒"]
 
# 口罩已经断货,从购物车中移除
shopping_list.remove("口罩")
# shopping_list的输出为["消毒液", "白酒"]
 
# 从购物车中添加葵花口服液
shopping_list.append("葵花口服液")
# shopping_list的输出为["消毒液", "白酒", "葵花口服液"]

一周有七天,从周一到周日,不会再包含其它的时间单位,一周所包含的时间显然是静态的。此时通过元组来定义一周的所有时间,在使用上非常自然:

# __desc__ = 通过元组来表示一周
 
# 定义变量week,表示一周
week = ("周一", "周二", "周三","周四", "周五", "周六","周日")
 
我们同样可以通过列表来表示一周:
# __desc__ = 通过列表来表示一周
 
# 定义变量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]

由于列表是动态的数据类型,所以可以在程序中随时对列表进行修改,比如某粗心的程序员在一周的时间里添加了一个周八:

# __desc__ = 粗心的程序员添加了个周八
# 定义变量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
week.append("周八")
# week的输出为["周一", "周二", "周三","周四", "周五", "周六","周日","周八"]

一周的时间里包含周八,这显然不符合日常逻辑。而使用元组,可以避免这样的问题,一旦对元组进行修改,Python就会抛出异常。

(2) 元组的自动解包

利用这样的特性,可以非常优雅地对多个变量进行赋值。
代码实例:

# __desc__ = 通过元组的解包来优雅地赋值
 
# 定义returned_values表示函数的返回值
returned_values = (True, 1314)
state, result = retured_values
 
# state的值为True, result的值为1314

在Python的函数中可以返回多个值,实质返回的是一个元组,然后利用元组的自动解包,将返回值一一地进行赋值。

知识要点

(1) 静态数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的静态数据类型有字符串,元组。
(2) 与静态数据类型相对的是动态数据类型,动态数据类型支持对集合中的元素进行修改。列表,以及其它复合数据类型:字典,集合,类类型等,都是动态的数据类型。

以上就是python 元组和列表的区别的详细内容,更多关于python 元组和列表的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
Python中用altzone()方法处理时区的教程
May 22 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Python标准库itertools的使用方法
Jan 17 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Python如何将将模块分割成多个文件
Aug 04 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 #Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 #Python
Anaconda的安装与虚拟环境建立
Nov 18 #Python
如何基于Python pygame实现动画跑马灯
Nov 18 #Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 #Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 #Python
Python urllib3软件包的使用说明
Nov 18 #Python
You might like
人大复印资料处理程序_补充篇
2006/10/09 PHP
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
python实现教务管理系统
2018/03/12 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
小学生秋游活动方案
2014/02/23 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2014年电教工作总结
2014/12/19 职场文书
班主任培训研修日志
2015/11/13 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
创业计划书之家政服务
2019/09/18 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python