Python入门教程+项目实战-11.1节: 元组的基础概念

news2024/10/7 10:15:44

目录

11.1.1 理解元组类型

11.1.2 元组的类型名

11.1.3 元组的定义

11.1.4 元组的解包

11.1.5 遍历可迭代对象

11.1.6 本节知识要点

11.1.7 系统学习python


11.1.1 理解元组类型

元组与列表有着相同的数据结构,区别在于,元组是静态的数据类型,而列表是动态的数据类型。关于元组与列表的区别,会在11.4节中进行详细讲解。Python中的元组类型是用()符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。与列表一样,在元组类型中可以包含任意的数据类型:

Python

# 定义一个元组变量container
container = (1,'2',3.0,True)
# 元组中的元素可为任意数据类型

元组与列表,以及字符串一样,都是一种线性的顺序表结构:

对线性的顺序表结构不是很熟悉的同学,可以复习9.1节《字符串的基础概念》的内容。

在线性的序列结构中,都可以通过索引的方式来访问数据集合中的元素:

Python

# 1.字符串是一种线性的序列结构
love = 'I Love You'
# 读取字符串中的第一个字符
char = love[0]
 
 
# 2.列表也是一种线性的序列结构
container = [1, '2', 3.0, True]
# 读取列表中的第一个元素
element = container[0]

 
# 3.元组也是一种线性的序列结构
container = (1, '2', 3.0, True)
# 读取元组中的第一个元素
element = container[0]

Python中的索引从0开始编号,0表示第一个位置,1表示第二个位置。Python也支持负数索引,负数索引从-1开始编号,-1表示倒数第一个位置,-2表示倒数第二个位置,以此类推。

11.1.2 元组的类型名

在交互模式中通过type来输出字符串的类型名:

>>> container = (1, '2', 3.0, True)

>>> type(container)

<class 'tuple'>

从输出可知,元组的类型名为tuple。

11.1.3 元组的定义

对元组进行定义,主要有对象定义法和直接定义法。

(1) 对象定义法

元组的类型名是tuple,可以直接在交互模式中执行help(tuple)来查找tuple的定义及用法:

class tuple(object)

|  tuple(iterable=(), /)

|

|  Built-in immutable sequence.

|

|  If no argument is given, the constructor returns an empty tuple.

|  If iterable is specified the tuple is initialized from iterable's items.

|

|  If the argument is a tuple, the return value is the same object.

在交互模式的输出中,tuple(iterable=(),/)的形式就是对象定义法。参数iterable表示可迭代对象。迄今学过的数据类型中,字符串、列表、元组都是一种可迭代对象。在Python中,凡是可以对集合中的元素进行遍历的数据类型,都是可迭代对象。所谓的遍历,就是逐一地访问集合中的元素。

代码实例:

Python

# __desc__ = 通过对象定义法定义元组
 
# 1.定义空元组
# 不传递任何参数时,定义的是空元组
container = tuple()
 
# 2.传递字符串类型定义元组,字符串是可迭代对象
letters = tuple("abcdefg")
"""
letters的输出为('a','b','c','d','e','f','g')
从输出可以看出,是逐一地将字符串中的字符添加进列表中
"""
 
# 3.传递列表类型定义元组,列表也是可迭代对象
container = tuple([1, '2', 3.0, True])
# container的输出为(1, '2', 3.0,True)

(2) 直接定义法

所谓的直接定义法,是直接通过()符号来定义元组:

Python

# __desc__ = 通过()符号来直接定义列表
container = (1, '2', 3.0, True)
 
在元组中只存在一个元素时,后面必须加一个英文的逗号。
代码实例:
# __desc__ = 元组中只存在一个元素时,后面必须加一个逗号
container = (1,)
 
# 如果不加逗号,那么()符号只是括号,而不是元组的别名符号
container = (1)
# 此时的container是一个整型变量
# container = (1) 相当于 container = 1

列表类型可以包含任意地数据类型,现在通过直接定义法来定义嵌套的元组。所谓嵌套的元组,是指在元组中包含元组。

代码实例:

Python

# __desc__ = 定义嵌套元组
 
# 定义一个二维的元组
container = ((1,2,3),(4,5,6))
 
# 定义一个三维的元组
container = (((1,2,3),(4,5,6)))

在定义元组时,也可以直接将()去掉,Python会自动地将逗号分隔的元素视为一个元组。

代码实例:

Python

# __desc__ = 定义元组时将()去掉
 
# Python会自动地将逗号分隔的元素列表视为一个元组
container = 1,2,3
 
# 只存在一个元素时,后面必须带上一个逗号
container = 1,
type(container)
# type的输出为<class 'tuple'>

10.1.4 元组的解包

将元组赋值给其它变量时,Python会自动地对元组执行解包。理解解包的概念,先看一则简单的代码实例:

Python

# __desc__ = 理解元组的解包
 
# 定义一个元组
container = 1,2,3
a,b,c = container
# a的值为1,b的值为2,c的值为3

代码讲解:

(1) 元组解包就是将元组进行拆解,然后将元组中的元素按序进行赋值

(2) 在代码a,b,c = container中,将元组container中的元素按序赋值给左边的变量

将元组进行解包赋值时,赋值操作符左边的变量个数必须与元组中的元素个数一致,否则会抛出异常信息。

元组中只存在一个元素时,如何解包?

代码实例:

Python

# __desc__ = 对只包含一个元素的元组进行解包
 
# 定义一个只包含一个元素的元组
container = 1,
 
# 变量后面加一个逗号即可
element,= container
# element指向的值为1

11.1.4 遍历可迭代对象

Python中的简单数据类型,都是不可迭代的对象。迄今学过的简单数据类型有整型,浮点类型,布尔类型。Python中的复合数据类型都是可迭代的对象。对于可迭代对象,可以在for循环结构中对集合中的元素进行遍历。

代码实例:

Python

# __desc__ = 在for循环中遍历元组
 
# 定义一个元组变量
container = 1,2,3,4,5
 
# 在for循环中遍历元组中的元素
for _ in container:
  print(_)
 
# 程序的输出为
1
2
3
4
5

11.1.5 本节知识要点

(1) 元组类型是一种数据集合,将集合中的元素按先后顺序进行排列

(2) Python中使用()括住的为元组类型,()中的元素以英文逗号进行分隔

(3) 元组的类型名是tuple,同字符串以及列表一样,元组也是线性的序列结构

(4) 可以通过对象定义法和直接定义法来定义元组

(5) 简单数据类型是不可迭代的,Python中的复合数据类型都是可迭代的对象

(6) 对于可迭代对象,可以在for循环中遍历集合中的元素

11.1.6 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地如何搭建一个Stable Diffusion 的AI绘画工具?

实现AI绘画自由指南 前期准备安装1.安装 Homebrew 工具2. 安装Python33.下载 Stable Diffusion -webui4.下载大模型5. 安装 GFPGAN&#xff08;神坑&#xff09;5. 允许 stable diffusion-webui 如何使用效果图 最近看到网上各种AI工具很是火爆&#xff0c;心里也是有点痒痒&am…

消防应急照明和疏散指示系统在轨道交通中的设计应用

摘要&#xff1a;本文分析了消防应急照明和疏散指示系统的特点与设计要点&#xff0c;介绍了系统在城市轨道交通中的设计应用&#xff0c;轨道交通设计中新的消防应急照明和疏散指示系统的备用照明仍由EPS供电&#xff0c;新增一套疏散指示照明系统&#xff0c;增加疏散照明指示…

Beta成果测试总结

Beta成果测试总结 Beta是一个项目的早期测试&#xff0c;通过 Beta能够初步的了解整个系统的稳定性&#xff0c;测试系统是否能够满足客户的需求。我们可以在测试过程中发现一些问题&#xff0c;从而快速解决。 当我们在测试一个新系统时&#xff0c;我们需要进行测试前的准备工…

Node.js的简介

一、什么是node.js Node.js是JavaScript语言的服务器运行环境。 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎&#xff0c;V8引擎执行…

一文带你全面了解最火爆的ChatGpt

导读 OpenAI近期发布聊天机器人模型ChatGPT&#xff0c;迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动&#xff0c;可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验&#xff0c;圈内外都纷纷惊呼。 为什…

【ONE·C++ || 继承】

总言 主要介绍继承相关内容。 文章目录 总言1、继承介绍1.1、继承是什么1.2、继承方式与访问限定符1.3、继承作用域 2、基类和派生类对象赋值转换2.1、子类对象可以赋值给父类对象/指针/引用2.2、基类对象不能赋值给派生类对象2.3、基类的指针可以通过强制类型转换赋值给派生类…

flask学习-实践02

项目实战 入门文当(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客 入门项目 抄作业了&#xff01;6 大 Flask 开源实战项目推荐_小詹学 Python的博客-CSDN博客 (66 条消息) GitHub 上有…

DataStructure--Tree

文章摘录链接 1.树基本概念 计算机数据结构中的树就是对显示中的树的一种抽象&#xff08;倒置现实中的树&#xff09;。 1.1 树 有层次关系N&#xff08;N≥0&#xff09;个节点的有限集合空树&#xff1a; N0 非空树&#xff1a; 有且只有一个根节点1.2 节点 根节点 分…

MongoDB【MongoRepository MongoTemplate】实现增删改查

目录 1&#xff1a;文章评论 1.1&#xff1a;需求分析 1.2&#xff1a;表结构分析 1.3&#xff1a;技术选型 1.3.1&#xff1a;mongodb-driver 1.3.2&#xff1a;SpringDataMongoDB 1.4&#xff1a;文章微服务模块搭建 1.5&#xff1a;文章评论实体类的编写 1.6&#x…

【计算机网络】为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?

【计算机网络】为什么 TCP 每次建立连接时&#xff0c;初始化序列号都要不一样呢&#xff1f; 为什么 TCP 每次建立连接时&#xff0c;初始化序列号都要不一样呢&#xff1f; 主要原因是为了防止历史报文被下一个相同四元组的连接接收。 TCP 四次挥手中的 TIME_WAIT 状态不是会…

现代操作系统和 TCP/IP(第二篇)

接着 现代操作系统和 TCP/IP 继续。 现代分时系统的时间片轮转机制让人们可以 “同时使用计算机”&#xff0c;从而滋生了 “同时使用网络” 的需求&#xff0c;现代分时系统是分组交换网的原动力。 从来没有超过一个人同时使用同一部电话&#xff0c;因此独占线路的电路交换…

2023蓝桥杯省模拟赛附近最小

2023蓝桥杯省模拟赛附近最小 这个题算是一个经典的数据结构入门题了&#xff0c;写了几个解法水一篇文章 map维护 时间复杂度nlgn&#xff0c;但是常数比较大&#xff0c;所以只能过90%数据 #include <iostream> #include<vector> #include<map> #include…

卖房子真是稳赚不赔

上面是一段很长的语音&#xff0c;对话是用的我们河池的桂柳话&#xff0c;不过桂柳话和普通话有很多相识之处&#xff0c;理解起来并不困难。 大概的意思是 A公司要给员工一批福利房&#xff0c;然后就让开发商来竞标&#xff0c;竞标的时候开发商就会说明清楚到时候给员工的房…

关于stl容器的迭代器失效问题

场景 在项目中使用stl容器的时候&#xff0c;多线程环境下出错&#xff0c;调试很久发现问题是使用容器的时候由于容器扩容导致的线程不安全&#xff0c;还有扩容导致的迭代器失效问题&#xff0c;于是就想着把迭代器失效的问题总结一下。 场景重现1   我在项目开发中使用ve…

【AI帮我写代码,上班摸鱼不是梦】如何调教ChatGPT,让它帮我写程序。

最近发现磁盘空间严重不足&#xff0c;都弹窗提示我了&#xff1a; 想想看到底哪个文件夹占的空间比较大&#xff0c;好做针对性的删除和清理。奈何Windows系统没有查看文件夹大小的工具&#xff0c;只能鼠标放在某个文件夹上&#xff0c;等提示&#xff1a; AI时代都来临了&am…

AttributeError: ‘ChatGLMConfig‘ object has no attribute ‘quantization_bit‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

STM32 产生随机数方式

STM32 产生随机数方式 C语言的stdlib.h库里的srand(unsigned seed)和rand(void)函数&#xff0c;可以配合产生伪随机数。其中srand(seed)产生算法种子&#xff0c;再由rand()通过算法产生随机数&#xff0c;产生的随机数在宏定义RAND_MAX范围内。如果seed不变&#xff0c;则产…

测试从未如此简单:接口自动化测试Python脚本实现

目录 摘要 步骤1&#xff1a;安装依赖项 步骤2&#xff1a;编写测试脚本 步骤3&#xff1a;运行测试 结论 摘要 自动化测试是现代软件开发过程中的重要环节。在许多情况下&#xff0c;特别是在web应用程序和移动应用程序中&#xff0c;接口自动化测试是其基础。下面就来介绍一…

嵌入式就业怎么样?

嵌入式就业怎么样? 现在的IT行业,嵌入式是大热门&#xff0c;下面也要来给大家介绍下学习嵌入式之后的发展以及就业怎么样。 首先是好找工作。嵌入式人才目前是处于供不应求的状态中&#xff0c;据权威统计机构统计在所有软件开发类人才的需求中&#xff0c;对嵌入式工程师的…

详解树与二叉树的概念,结构,及实现(上篇)

目录 一&#xff0c; 树 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 二&#xff0c; 二叉树 2.1二叉树概念 三&#xff0c;特殊的二叉树 1. 满二叉树 2. 完全二叉树 3. 1 二叉树的性质 3. 2 二叉树的存储…