当前位置: 首页 > news >正文

Python零基础入门到高手8.4节: 元组与列表的区别

目录

8.4.1 不可变数据类型

8.4.2 可变数据类型

8.4.3 元组与列表的区别

8.4.4 今天彩票没中奖


8.4.1 不可变数据类型

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

image.png

在使用[]操作符对字符串,元组进行修改时,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

Python解释器抛出了TypeError的异常信息,TypeError表示类型错误的意思。之所以是类型错误,很好理解,因为字符串或元组这种类型不支持对元素进行修改。

8.4.2 可变数据类型

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

>>> numbers = [1,2,3,4,5]

>>> id(numbers)

2749153235976

>>> numbers[0]=6

>>> numbers

[6, 2, 3, 4, 5]

>>> id(numbers)

2749153235976

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

调用内置的id函数可以得到对象的id值,在CPython中,id值即内存地址。

8.4.3 元组与列表的区别

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

(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就会抛出类型错误的异常信息。

8.4.4 今天彩票没中奖

跟薯条老师学高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,金融量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。

相关文章:

  • 以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • c++,windows,多线程编程详细介绍
  • 【歌曲结构】2:小节与歌曲结构信息整合
  • 模糊综合评价模型建立
  • salesforce如何导出所有字段
  • 人工神经网络(ANN)模型
  • ctfshow权限维持
  • FPGA: UltraScale+ bitslip实现(方案+代码)
  • AI Agent开发第67课-彻底消除RAG知识库幻觉(1)-文档分块全技巧
  • 通义灵码 2.5.4 版【**编程智能体**】初体验
  • How to initialize Linux Mint 22.1 Desktop Operating System
  • Python训练打卡Day22
  • 【Java实战】IO流(转换流,打印流,数据流,序列化流)
  • 网络原理 | 网络基础概念复习
  • 以项目的方式学QT开发C++(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • 第二十五天打卡
  • 晶振的核心参数
  • 多级分类的实现方式
  • 双系统重装ubuntu
  • 缺乏对新技术的评估和引入机制,如何建立
  • 大陆非遗项目打铁花、英歌舞将在台演出
  • 德州国资欲退出三东筑工,后者大股东系当地房企东海集团
  • 我国城市规划“全面体检”套餐出台,城市体检将逐步与供地计划等挂钩
  • 陕西省安康市汉阴县县长陈永乐已任汉阴县委书记
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 上海首发经济“卷”到会展业,浦东签约三个年度“首展”