【深度学习】 Python 和 NumPy 系列教程(四):Python容器:2、元组tuple详解(初始化、索引和切片、元组特性、常用操作、拆包、遍历)

news2024/11/26 10:46:19

目录

一、前言

二、实验环境

三、Python容器(Containers)

0. 容器介绍

2. 元组(Tuple)

1. 初始化

a. 使用小括号()

b. 省略小括号

c. tuple() 函数

2. 访问元组元素

a. 索引

b. 切片

3. 元组的特性

a. 不可变

b. 包含不同类型

c. 可嵌套

4. 元组的常用操作

a. 元组长度

b. 元素计数

c. 元组拼接

d. 元组重复

e. 检查元素是否存在于元组中

5. 拆包

6. 遍历

a. for 循环

b. enumerate()函数


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、数组索引、数据类型、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

        Python 3.7

        运行下述命令检查Python版本

 python --version 

三、Python容器(Containers)

0. 容器介绍

        Python中的容器是用于存储和组织数据的对象。常见的容器包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。

  • 列表是有序的可变容器,可以包含不同类型的元素,使用方括号([])来创建。
my_list = [1, 2, 3, 'a', 'b', 'c']
  • 元组是有序的不可变容器,也可以包含不同类型的元素,使用圆括号(())来创建。
my_tuple = (1, 2, 3, 'a', 'b', 'c')
  • 集合是无序且不重复的容器,用于存储唯一的元素,使用大括号({})或者set()函数来创建。
my_set = {1, 2, 3, 'a', 'b', 'c'}
  •  字典是无序的键值对容器,用于存储具有唯一键的值,使用花括号({})或者dict()函数来创建。
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

        这些容器都提供了不同的方法和操作,用于对数据进行存储、访问和处理。可以根据具体的需求选择适合的容器类型。

2. 元组(Tuple)

        元组(tuple)是Python中的一种序列类型,类似于列表,它可以存储多个元素。与列表不同的是,元组是不可变的,一旦创建后就不能修改

1. 初始化

a. 使用小括号()

my_tuple = ()

        这种方式创建的元组是空的,不包含任何元素。

        使用小括号()和逗号分隔的元素创建元组:

my_tuple = (1, 2, 3)

b. 省略小括号

my_tuple = 1, 2, 3

        逗号分隔的元素会被组合成一个元组。省略了小括号,但是仍然是一个元组。

c. tuple() 函数

   tuple()函数可以将其他可迭代对象(如列表、字符串、字典等)转换为元组。

  • 将列表转换为元组:
my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(my_list)
print(my_tuple)  # 输出:(1, 2, 3, 4, 5)
  • 将字符串转换为元组:
my_string = "Hello, World!"
my_tuple = tuple(my_string)
print(my_tuple)  # 输出:('H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!')
  • 将字典转换为元组:
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_tuple = tuple(my_dict)
print(my_tuple)  # 输出:('a', 'b', 'c')

2. 访问元组元素

a. 索引

# 使用索引访问元组中的特定元素
print(my_tuple[0])      # 输出:a
print(my_tuple[-1])      # 输出:d

b. 切片

# 使用切片操作获取元组的子序列
print(my_tuple[1:3])    # 输出:('b', 'c')
print(my_tuple[1:])     # 输出:('b', 'c', 'd')
print(my_tuple[:])      # 输出:('a', 'b', 'c', 'd')
print(my_tuple[1:-1])   # 输出:('b',)
print(my_tuple[:-1])    # 输出:('a', 'b', 'c')

3. 元组的特性

a. 不可变

        元组是不可变的,一旦创建后,不能修改元组的元素。无法对元组中的元素进行增加、删除或修改操作。

my_tuple = (1, 2, 3)
my_tuple[0] = 4  # 会引发一个类型错误(TypeError: 'tuple' object does not support item assignment)

b. 包含不同类型

        元组可以包含不同类型的元素,例如整数、字符串、浮点数等。

my_tuple = (1, "hello", 3.14)

c. 可嵌套

        元组可以嵌套,即元组中可以包含其他元组作为元素。

# 访问元组中的元素
element1 = nested_tuple[0]
print(element1)  # 输出: (1, 'hello')
print(nested_tuple[2][0])  # 输出: world

4. 元组的常用操作

a. 元组长度

b. 元素计数

c. 元组拼接

d. 元组重复

e. 检查元素是否存在于元组中

my_tuple = (1, 2, 3)

# 获取元组的长度
print(len(my_tuple))  # 输出:3

# 元素计数
print(my_tuple.count(2))  # 输出: 1(元素2在元组中出现的次数)

# 元组拼接
new_tuple = my_tuple + (4, 5)
print(new_tuple)  # 输出:(1, 2, 3, 4, 5)

# 元组重复
repeated_tuple = my_tuple * 2
print(repeated_tuple)  # 输出:(1, 2, 3, 1, 2, 3)

# 检查元素是否存在于元组中
print(2 in my_tuple)  # 输出:True
print(4 not in my_tuple)  # 输出:True

5. 拆包

        元组拆包(元组解构、Tuple Unpacking)是一种将元组的元素赋值给多个变量的方法。通过元组解构,可以方便地将元组中的值分配给对应的变量。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a)  # 输出:1
print(b)  # 输出:2
print(c)  # 输出:3

        在这个例子中,元组my_tuple包含了三个元素,分别是1、2和3。通过元组解构,我们将这三个值分别赋给了变量abc。结果是变量a的值为1,变量b的值为2,变量c的值为3。

        需要注意的是,变量的数量必须与元组中的元素数量相同,否则会引发异常。

  • 变量的数量少于元组中的元素数量:
my_tuple = (1, 2, 3)
a, b = my_tuple
ValueError: too many values to unpack (expected 2)
  • 变量的数量多于元组中的元素数量:
my_tuple = (1, 2, 3)
a, b, c, d = my_tuple
ValueError: not enough values to unpack (expected 4, got 3)

6. 遍历

a. for 循环

my_tuple = (1, 2, 3, 4, 5)
for element in my_tuple:
    print(element)

b. enumerate()函数

my_tuple = (1, 2, 3, 4, 5)

for index, element in enumerate(my_tuple):
    print(f"Index: {index}, Element: {element}")

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

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

相关文章

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…

由于电脑出现msvcr110.dll提示错误的解决方法

最近&#xff0c;我在尝试运行一款新的软件时&#xff0c;突然遇到了一个错误提示&#xff0c;提示说缺少msvcr110.dll文件&#xff0c;导致软件无法启动。在使用电脑过程中&#xff0c;我们常常会遇到一些系统文件丢失的问题。其中&#xff0c;msvcr110.dll是Windows操作系统中…

什么是Linux

什么是Linux&#xff1f; 不知道大家是什么时候开始接触Linux&#xff0c;我记得我是大三的时候&#xff0c;那时候通过国嵌、韦东山的教学视频&#xff0c;跟着搭bootloader&#xff0c;修改内核&#xff0c;制作根文件系统&#xff0c;一步步&#xff0c;视频真的很简单&…

C++的继承以及virtual的底层实现

1.继承的基本形式 1.还是举每次讲继承都会举得一个例子&#xff1a;老师和学生都有人类的共同信息----姓名&#xff0c;性别&#xff0c;身份证等等&#xff0c;而学生有学工号&#xff0c;课表。老师有上班时间等等&#xff0c;所以在类中就有了继承这一说&#xff0c;子类继…

UMA 2 - Unity Multipurpose Avatar☀️五.如何使用别人的Recipe和创建自己的服饰Recipe

文章目录 🟥 使用别人的Recipe1️⃣ 导入UMA资源效果展示2️⃣ 更新Library3️⃣ 试一下吧🟧 创建自己的服饰Recipe1️⃣ 创建自己的服饰Recipe2️⃣ 选择应用到的Base Recipe3️⃣ 指定显示名 / 佩戴位置 / 隐藏部位4️⃣ 给该服饰Recipe指定Slot / Overlay🚩 赋予Slot�…

【洛谷 P1105】平台 题解(结构体排序+枚举)

平台 题目描述 空间中有一些平台。给出每个平台的位置&#xff0c;请你计算从每一个平台的边缘落下之后会落到哪一个平台上。注意&#xff0c;如果某两个平台的某个两边缘横坐标相同&#xff0c;物体从上面那个平台落下之后将不会落在下面那个平台上。平台可能会重叠。 如果…

springboot 异常 #Class path contains multiple SLF4J bindings.警告解决

1.异常现象 启动 Maven 项目时&#xff0c;抛出警告信息&#xff1a; 2.排查分析 从报出来的警告信息来看&#xff0c;大致意思是&#xff0c;pom.xml 引入的包 slf4j-log4j12-1.7.20.jar 和包 logback-classic-1.1.7.jar 中&#xff0c;都找到了 /org/slf4j/impl/StaticLogger…

Arrays.copyOf 和System.arraycopy?深拷贝和浅拷贝?

Arrays.copyOf 和 System.arraycopy 1&#xff09;二者有何不同&#xff1f; System.arraycopy()方法 System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 需主动创建目标对象dest可定义起始元素&#xff0c;灵活拷贝元素比较重要的一点&…

TCP IP网络编程(五) 基于TCP的服务器端、客户端 (补充)

文章目录 回声客户端的完美实现回声客户端出现的问题回声客户端问题解决方法 TCP原理TCP套接字中的I/O缓冲TCP内部工作原理1&#xff1a;与对方套接字的连接TCP内部工作原理2&#xff1a;与对方主机的数据交换TCP内部工作原理3&#xff1a;断开与套接字的连接 总结 回声客户端的…

CRM软件管理系统的基本功能

CRM管理系统是企业运营的重要工具&#xff0c;它可以帮助企业管理客户关系&#xff0c;提升销售效率&#xff0c;大幅提高客户转化率&#xff0c;实现业绩增长。那么&#xff0c;CRM管理系统一般包含哪些功能呢&#xff1f;下面我们就来说说。 1、销售自动化 销售自动化顾名思…

【面试专题】Spring篇②

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;Java面试专题 目录 1.spring-bean的循环依赖 2.springMVC执行流程 3.Springboot自动配置原理 4.Spring框架常见的注解&#xff08;Spring&#xff0c;SpringMVC&#xff0c;SpringBoot&#x…

Ubuntu编译运行socket.io

本篇文章记录一下自己在ubuntu上编译运行socket.io的过程&#xff0c;客户端选用的是socket.io的c的库&#xff0c;编译起来倒不难&#xff0c;但是说到运行的话&#xff0c;对我来说确实是花了点功夫。毕竟程序要能运行起来才能更方便地去熟悉代码&#xff0c;因此今天我就记录…

MySQL——日志

日志的作用 1.用来排错 2.用来做数据分析 3.了解程序的运行情况&#xff0c;是否健康--》了解MySQL的性能&#xff0c;运行情况 分类 mysql很多有类型的日志&#xff0c;按照组件划分的话&#xff0c;可以分为 服务层日志 和 存储引擎层日志 &#xff1a; - 服务层…

数据治理-数据建模和设计

是什么&#xff1f; 数据建模是发现、分析和确定数据需求的过程&#xff0c;用一种称为数据模型的精确形式表示和传递这些数据需求。数据建模是数据管理的一个重要组成部分。建模过程中要求组织发现并记录数据组合的方式。 数据可以采用多种不同的模式来表示&#xff0c;其中最…

【广州华锐互动】电厂三维数字孪生大屏的功能和优势

在工业互联网的背景下&#xff0c;电厂三维数字孪生大屏系统正在逐渐成为电力行业的重要技术。通过创建电厂的虚拟模型&#xff0c;这个数字孪生系统可以实现对实际电厂的实时监控&#xff0c;预测维护需求&#xff0c;优化运营效率&#xff0c;甚至在某些情况下&#xff0c;能…

CrossEntropyLoss() 和 nn.BCEWithLogitsLoss() 举例说明区别

CrossEntropyLoss() 通常用于多分类任务&#xff0c;它接受一个包含类别标签的张量作为目标值&#xff0c;并且假设每个样本只属于一个类别。在多分类任务中&#xff0c;模型的最后一层输出是一个概率分布&#xff0c;表示每个类别的概率。CrossEntropyLoss() 计算模型输出与目…

微信“刷掌支付”上线,扫手就可以付款!你知道怎么开通了吗?

不用扫码&#xff01;不用刷卡&#xff01;隔空感应&#xff01; 刷掌就能支付 没错&#xff01; 新科技来咯~ 刷 掌 早在今年5月&#xff0c;微信刷掌支付正式面世&#xff0c;目前已应用于交通、健身、校园、零售、餐饮、办公、共享充电等多个场景&#xff0c;如北京地铁…

vue3+ts项目打包后的本地访问

注意&#xff1a;打包之后不可直接点击html访问&#xff0c;需要给项目安装本地服务&#xff01; 1、安装servenpm i -g serve 2、打包项目npm run build 生成dist文件夹 3、本地访问serve dist 运行service dist之后的控制台 可复制下方的地址运行打包后的项目&#xff0c;运行…

Spring系列文章:Spring中的设计模式

一、简单⼯⼚模式 BeanFactory的getBean()⽅法&#xff0c;通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式&#xff08;静态⼯⼚模 式&#xff09;&#xff1b; 二、⼯⼚⽅法模式 FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法&a…

英语单词(二)

1.int:整形 2.char:字符型 3.scanner:接受输入,扫描器 4.integer:整数,整形 5.type:类型 6.string:字符串类型 7.double:双精度浮点型