Python入门教程+项目实战-11.4节: 元组与列表的区别
目录
11.4.1 元组与列表的区别
11.4.2 可变数据类型
11.4.3 元组与列表的区别
11.4.4 知识要点
11.4.5 系统学习python
11.4.1 不可变数据类型
不可变数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的不可变数据类型有字符串,元组。
在使用[]操作符对字符串,元组进行修改时,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表示类型错误的意思。之所以是类型错误,很好理解,因为字符串或元组这种类型不支持对元素进行修改。
11.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值即内存地址。
11.4.3 元组与列表的区别
在使用元组的场景中,都可以使用列表来进行代替,那么为什么还要定义元组这种数据类型?在本小节的内容中,通过两个方面来进行分析:
(1) 元组是静态,只读的数据类型
元组与列表的核心区别在于,元组是静态的,不可变的,列表是动态的, 可变的。我们在定义变量时,如果该数据对象具备静态,只读的属性,应当使用元组,否则应当使用列表。以生活中的购物清单来进行举例,在购物清单中,我们可以随时对清单进行修改,比如添加某一个商品,或从购物车中移除某一个商品。购物清单是可修改的,动态的,现在通过Python代码来进行模拟:
Python
# __desc__ = 通过Python代码模拟购物清单的添加和删除# 定义shopping_list,表示购物清单
shopping_list = ["消毒液", "口罩", "白酒"]# 口罩已经断货,从购物车中移除
shopping_list.remove("口罩")
# shopping_list的输出为["消毒液", "白酒"]# 从购物车中添加葵花口服液
shopping_list.append("葵花口服液")
# shopping_list的输出为["消毒液", "白酒", "葵花口服液"]
一周有七天,从周一到周日,不会再包含其它的时间单位,此时通过元组来定义一周的所有时间,在使用上非常自然:
Python
# __desc__ = 通过元组来表示一周# 定义变量week,表示一周
week = ("周一", "周二", "周三","周四", "周五", "周六","周日")我们同样可以通过列表来表示一周:
# __desc__ = 通过列表来表示一周# 定义变量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
由于列表是可变的数据类型,所以可以在程序中随时对列表进行修改:
Python
# __desc__ = 粗心的程序员添加了个周八
# 定义变量week,表示一周
week = ["周一", "周二", "周三","周四", "周五", "周六","周日"]
week.append("周八")
# week的输出为["周一", "周二", "周三","周四", "周五", "周六","周日","周八"]
一周的时间里包含周八,这显然不符合日常逻辑。而使用元组,可以避免这样的问题, 一旦对元组进行修改,Python就会抛出类型错误的异常信息。
(2) 元组的自动解包
在11.1节的内容中,讲到了可以对元组进行解包。利用这样的特性,可以非常优雅地对多个变量进行赋值。
代码实例:
Python
# __desc__ = 通过元组的解包来优雅地赋值# 定义returned_values表示函数的返回值
returned_values = (True, 1314)
state, result = retured_values# state的值为True, result的值为1314
我们在后面的课程中会系统学习Python中的函数,在函数中返回多个值,实质返回的是一个元组。利用元组的自动解包,就可以在函数调用结束后对变量进行优雅地赋值。
11.4.4 知识要点
(1) 静态数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的静态数据类型有字符串,元组。
(2) 与静态数据类型相对的是动态数据类型,动态数据类型支持对集合中的元素进行修改。列表,以及其它复合数据类型:字典,集合,类类型等,都是动态的数据类型。
11.4.5 系统学习python
薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。
相关文章:

Python入门教程+项目实战-11.4节: 元组与列表的区别
目录 11.4.1 元组与列表的区别 11.4.2 可变数据类型 11.4.3 元组与列表的区别 11.4.4 知识要点 11.4.5 系统学习python 11.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的不可变数据类型有字符串&#x…...

如何做好采购计划和库存管理?
“销售计划不专业且不稳定”“准确性低” “目前只按照过往销量和采购周期做安全库存,但欠货和滞销依然严重” 题主的问题其实蛮有代表性的, 也是传统采购和库存管理常常面临的问题: ① 前后方协作困难 采购/销售/财务工作相互独立&#x…...

客户管理系统的作用有哪些?
阅读本文您将了解:1.客户管理系统的作用;2.客户管理系统软件怎么用;3.客户管理的注意事项。 一、客户管理系统的作用 客户是企业的重要财富,因此客户管理是企业发展过程中至关重要的一部分,那么客户管理怎么做&#…...

Sqlmap手册—史上最全
Sqlmap手册—史上最全 一.介绍 开源的SQL注入漏洞检测的工具,能够检测动态页面中的get/post参数,cookie,http头,还能够查看数据,文件系统访问,甚至能够操作系统命令执行。 检测方式:布尔盲注、…...

《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战
ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译、写文章、写代码等。ChatGPT很强大,让很多人感兴趣,也让很多人担心。 使用ChatGPT有一些风险,比如数据的质…...

windows开机启动软件、执行脚本,免登录账户
文章目录 前言一、打开任务计划程序1.我电脑上的是点搜索“任务计划程序”,可能每个电脑的搜索按钮不一样,自行查找2.打开后应该是长这样的 二、创建文件夹1.点击任务计划程序库、右键选择新建文件夹2.名字顺便,点击确定3.创建后如图、点击目…...

Rocky Linux 8 安装实时内核
【方法一:yum 安装】 在 /etc/yum.repos.d 目录下新建一个Rocky8-rt.repo安装rt内核和相关工具$ sudo yum install kernel-rt重启系统$ sudo reboot【方法二:rpm安装】 查看系统内核版本$ uname -a 4.18.0-425.3.1.el8_7.x86_64根据系统内核版本下载实…...

数据预处理(Data Preprocessing)
Data Preprocessing 前言Why preprocess?Major Tasks in Data PreprocessingData CleaningIncomplete (Missing) DataWhat to Consider When Handling Missing Data?MCARMARMNAR How to Handle Missing Data - ImputationMore on ImputationEven More on ImputationPreproces…...

MySQL数据库——MySQL WHERE:条件查询数据
在 MySQL 中,如果需要有条件的从数据表中查询数据,可以使用 WHERE 关键字来指定查询条件。 使用 WHERE 关键字的语法格式如下: WHERE 查询条件 查询条件可以是: 带比较运算符和逻辑运算符的查询条件带 BETWEEN AND 关键字的查询…...

【JavaEE初阶】多线程(三)volatile wait notify关键字 单例模式
摄影分享~~ 文章目录 volatile关键字volatile能保证内存可见性 wait和notifywaitnotifynotifyAllwait和sleep的区别小练习 多线程案例单例模式饿汉模式懒汉模式 volatile关键字 volatile能保证内存可见性 import java.util.Scanner;class MyCounter {public int flag 0; }p…...

git把一个分支上的某次修改同步到另一个分支上,并解决git cherry-pick 冲突
背景 我们在工作中经常会碰到好几个同事共同在一个分支上开发,一个项目同时会有好几个分支,我们在feature上开发的功能时,有可能某个需求需要提前发布,这个时候我们已经在feature A上开发完成,但是需要在master上发布…...

S32K3系列单片机开发笔记(SIUL是什么/配置引脚复用的功能·)
前言 今天花时间看了一下,SIUL2模块的相关内容,并参照文档,以及例程作了一些小记录,知道该如何使用这个外设,包括引脚的配置,中断配置,以及常用函数的使用等,但对其中的一些细节还需…...

Linux没网络的情况下快速安装依赖或软件(挂载本地yum仓库源(Repository))
一、上传iso系统镜像: 上传和系统同一版本、同一位数(32bit:i686或i386/64bit:x86_64)的系统,不能是Minimal版本,可以是DVD(较全)或everything(最全)。 注&am…...

为了安装pip install pyaudio花费不少时间,坑
记录一下吧: 环境: mac OS Monterey 12.6.5 pyaudio是没有mac下的whl, 通过pip安装是需要进行编译的,我原来系统的是/usr/local/bin/clang 15.0.0版本,然后调用的C_CLUDE_PATH就是/usr/local/include和下面的c/v1&am…...

第十一章 组合模式
文章目录 前言一、组合模式基本介绍二、UML类图三、完整代码抽象类,所有类都继承此类学校类以父类型引用组合一个学院类学院类以父类型引用组合一个专业类专业类,叶子节点,不能再组合其他类测试类 四、组合模式在JDK集合的源码分析五、组合模…...

LeetCode链表OJ题目 代码+思路分享
目录 删除有序数组中的重复项合并两个有序数组移除链表元素 删除有序数组中的重复项 链接: link 题目描述: 题目思路: 本题使用两个指针dst和src一前一后 相同情况: 如果nums[dst]nums[src],那么src 不相同情况: 此…...

第06讲:为何各大开源框架专宠 SPI 技术?
在此前的内容中,已经详细介绍了 SkyWalking Agent 用到的多种基础技术,例如,Byte Buddy、Java Agent 以及 OpenTracing 中的核心概念。本课时将深入介绍 SkyWalking Agent 以及 OAP 中都会使用到的 SPI 技术。 JDK SPI 机制 SPI(…...

[Unity] No.1 Single单例模式
单例模式 1. 基础 定义:单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地…...

【chatGPT知识分享】Flutter web 性能优化基础入门
简介 Flutter 是 Google 在这里插入代码片公司推出的跨平台移动应用开发框架,支持 Android、iOS 和 Web 等多个平台。Flutter Web 是 Flutter 在 Web 平台上的应用,可以开发具有良好用户体验的网站。但是,由于 Web 环境的特殊性,…...

探索Qt折线图之美:一次详尽的多角度解析
探索Qt折线图之美:一次详尽的多角度解析 第一章:Qt折线图的基本概念与应用场景(Basic Concepts and Applications of Qt Line Charts)1.1 Qt折线图简介(Introduction to Qt Line Charts)1.2 Qt折线图的应用…...

minio集群部署,4台服务器+1台nginx
4台主机1台nginx负载均衡 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,即:用户名和密码 分布式Minio存放数据的磁盘目录必须是空目录 分布式Minio官方建议生产环境最少4个节点,因为有N个节点,得至少保证有N/2的节…...

实例分割算法BlendMask
实例分割算法BlendMask 论文地址:https://arxiv.org/abs/2001.00309 github代码:https://github.com/aim-uofa/AdelaiDet 我的个人空间:我的个人空间 密集实例分割 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法…...

多线程、智能指针以及工厂模式
目录 一、unique_lock 二、智能指针 (其实是一个类) 三、工厂模式 一、unique_lock 参考文章【1】,了解unique_lock与lock_guard的区别。 总结:unique_lock使用起来要比lock_guard更灵活,但是效率会第一点,内存的…...

初探 VS Code + Webview
本文作者为 360 奇舞团前端开发工程师 介绍 VSCode 是一个非常强大的代码编辑器,而它的插件也非常丰富。在开发中,我们经常需要自己编写一些插件来提高开发效率。本文将介绍如何开发一个 VSCode 插件,并在其中使用 Webview 技术。首先介绍一下…...

Codeforces Round 864 (Div. 2)(A~D)
A. Li Hua and Maze 给出两个不相邻的点,最少需要堵上几个方格,才能使得两个方格之间不能互相到达。 思路:显然,对于不邻任何边界的方格来说,最少需要的是4,即上下左右都堵上;邻一个边界就-1&a…...

第3章-运行时数据区
此章把运行时数据区里比较少的地方讲一下。虚拟机栈,堆,方法区这些地方后续再讲。 转载https://gitee.com/youthlql/JavaYouth/tree/main/docs/JVM。 运行时数据区概述及线程 前言 本节主要讲的是运行时数据区,也就是下图这部分,…...

delta.io 参数 spark.databricks.delta.replaceWhere.constraintCheck.enabled
总结 默认值true 你写入的df分区字段必须全部符合覆盖条件 .option("replaceWhere", "c2 == 2") false: df1 overwrite tb1: df1中每个分区的处理逻辑: - tb1中存在(且谓词中匹配)的分区,则覆盖 - tb1中存在(谓词中不匹配)的分区,则append - tb1中不存…...

Redis知识点
1. Redis-常用数据结构 Redis提供了一些数据结构供我们往Redis中存取数据,最常用的的有5种,字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(zset…...

经典数据结构之2-3树
2-3树定义 2-3树,是最简单的B-树,其中2、3主要体现在每个非叶子节点都有2个或3个子节点,B-树即是平衡树,平衡树是为了解决不平衡树查询效率问题,常见的二叉平衡书有AVL树,它虽然提高了查询效率,…...

Numpy从入门到精通——节省内存|通用函数
这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《…...