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中requests库session对象的妙用详解
Oct 30 Python
Python中static相关知识小结
Jan 02 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Python 3.8 新功能全解
Jul 25 Python
Python中断多重循环的思路总结
Oct 04 Python
TensorFlow固化模型的实现操作
May 26 Python
Python如何实现定时器功能
May 28 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
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
简单叙述一下MYSQL的优化
2016/05/09 面试题
房产委托公证书
2014/04/08 职场文书
计划生育宣传标语
2014/06/21 职场文书
单位接收证明格式
2015/06/18 职场文书
运动员入场前导词
2015/07/20 职场文书