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中使用logging模块代替print(logging简明指南)
Jul 09 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
python中eval与int的区别浅析
Aug 11 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
python异常处理之try finally不报错的原因
May 18 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Python数据分析入门之数据读取与存储
May 13 Python
Python源码解析之List
May 21 Python
python实现会员管理系统
Mar 18 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[00:10]神之谴戒
2019/03/06 DOTA
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python操作链表的示例代码
2020/09/27 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
房地产融资计划书
2014/01/10 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
小英雄雨来观后感
2015/06/09 职场文书
小学教师读书笔记
2015/07/01 职场文书
小学记事作文之200字
2019/08/06 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android