【100天精通python】Day8:数据结构_元组Tuple的创建、删除、访问、修改、推导系列操作

news2024/11/24 6:37:57

目录

1 创建元组

2 删除元组

3 访问元组元素

4  多个值的同时赋值和交换

5 修改元组元素

6  元组推导式

7 元组运算符

 8  元组常用场景

 9 元组(Tuple)和列表(List)的区别


         元组(tuple)是 Python 中的一种有序、不可变的数据结构。它类似于列表,但与列表不同的是,元组的内容一旦创建后就不能被修改。元组用圆括号 () 表示,可以包含任意类型的数据,如整数、浮点数、字符串、列表等。

        下面详细介绍元组的特性及应用示例:

1 创建元组

        元组可以用圆括号 () 或直接用逗号分隔来创建。

# 使用圆括号创建元组
t1 = (1, 2, 3)

# 使用逗号分隔创建元组
t2 = 4, 5, 6

# 元组可以包含不同类型的元素
t3 = (1, 'hello', [7, 8, 9])

2 删除元组

        在 Python 中,元组是不可变的数据结构,因此无法直接删除元组中的元素。一旦创建了元组,其中的元素是不可修改的,也无法添加或删除元素。

        如果你需要删除整个元组,你可以使用 del 关键字来删除整个元组对象,如下所示:

my_tuple = (1, 2, 3)
del my_tuple
# 尝试访问已删除的元组会引发 NameError: name 'my_tuple' is not defined

3 访问元组元素

元组中的元素可以通过索引来访问,索引从0开始。

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

# 访问第一个元素
print(t[0])  # 输出: 1

# 访问最后一个元素
print(t[-1])  # 输出: 5

4  多个值的同时赋值和交换

元组可以用于多个值的同时赋值和交换值的操作。

# 多个值同时赋值
a, b, c = (1, 2, 3)

# 交换值
x = 10
y = 20
x, y = y, x

5 修改元组元素

        在 Python 中,元组是不可变的数据结构,意味着一旦创建后,其元素不能被修改、添加或删除。如果想要修改元组的元素,只能创建一个新的元组并替换原来的元组。以下是一个示例:

# 创建一个元组
t = (1, 2, 3)

# 错误,元组不可修改
t[0] = 10

# 创建一个新的元组并替换原来的元组
t = (10, 2, 3)

 如上所示,如果想要修改元组中的元素,需要创建一个新的元组,并将修改后的值赋给新的元组。因为元组是不可变的,所以在修改元组时需要特别注意。如果需要修改元素,可以考虑使用列表(list)数据结构,因为列表是可变的,允许对元素进行增删改操作。

6  元组推导式

        元组推导式 是一种快速创建元组的方法,类似于列表推导式。它允许我们根据特定规则从一个可迭代对象中生成元组的元素。元组推导式使用圆括号 () 来定义,并且可以包含一个表达式和一个可迭代对象,通过对可迭代对象的每个元素应用表达式来生成元组的元素。

        元组推导式的一般语法如下:

new_tuple = (expression for item in iterable)

其中,expression 是一个表达式,item 是可迭代对象 iterable 中的每个元素,new_tuple 是生成的新元组。

元组推导式的用法如下示例:

示例1:生成一个包含平方数的元组

# 使用元组推导式创建包含1到10的平方数的元组
squares_tuple = tuple(i**2 for i in range(1, 11))
print(squares_tuple)

输出结果为:

(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

示例2:筛选出包含特定字符的元组

# 使用元组推导式筛选出包含字母'a'的元组元素
words_tuple = ('apple', 'banana', 'orange', 'grape', 'kiwi')
filtered_tuple = tuple(word for word in words_tuple if 'a' in word)
print(filtered_tuple)

输出结果为:

('apple', 'banana', 'grape')

示例3:生成一个包含条件判断的元组

# 使用元组推导式生成包含条件判断的元组
numbers_tuple = (i if i % 2 == 0 else i * 2 for i in range(1, 11))
print(numbers_tuple)

输出结果为:

(2, 2, 6, 4, 10, 6, 14, 8, 18, 10)

 需要注意的是,元组推导式创建的元组是不可变的,一旦生成后,其中的元素不能被修改。元组在许多场景中是非常有用的,例如当你想要创建一个不可变的数据集合或用作字典的键时。

7 元组运算符

        在 Python 中,元组支持一些基本的运算符,让你可以对元组进行操作和组合。以下是常见的元组运算符:

  1. 索引:通过索引值获取元组中的元素。例如:my_tuple[0] 获取第一个元素。
  2. 切片:通过切片获取元组的子集。例如:my_tuple[1:3] 获取从第二个到第三个元素的子集。
  3. 连接:使用加号 + 将两个元组连接成一个新的元组。例如:my_tuple1 + my_tuple2
  4. 重复:使用乘号 * 将元组重复多次。例如:my_tuple * 3 将元组重复三次。
  5. 成员资格:使用关键字 in 检查元素是否在元组中。例如:element in my_tuple 返回布尔值。
  6. 元素个数:使用 len() 函数获取元组中元素的个数。
  7. 最大值和最小值:使用 max()min() 函数获取元组中的最大值和最小值。
  8. 转换为元组:使用 tuple() 函数可以将其他序列(如列表、字符串等)转换为元组。

示例:

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

# 索引
print(my_tuple[0])  # 输出:1

# 切片
print(my_tuple[1:3])  # 输出:(2, 3)

# 连接
my_tuple2 = (6, 7)
print(my_tuple + my_tuple2)  # 输出:(1, 2, 3, 4, 5, 6, 7)

# 重复
print(my_tuple * 2)  # 输出:(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)

# 成员资格
print(3 in my_tuple)  # 输出:True
print(6 in my_tuple)  # 输出:False

# 元素个数
print(len(my_tuple))  # 输出:5

# 最大值和最小值
print(max(my_tuple))  # 输出:5
print(min(my_tuple))  # 输出:1

# 转换为元组
my_list = [1, 2, 3]
print(tuple(my_list))  # 输出:(1, 2, 3)

 8  元组常用场景

  • 作为字典的键值,因为元组是不可变的,可以保证字典的键不被修改。
  • 存储数据库查询结果,避免意外修改数据。
  • 函数返回多个值时,可以将多个值打包成一个元组返回。
​
# 作为字典的键值
person1 = ('John', 30)
person2 = ('Jane', 25)

persons = {person1: 'Engineer', person2: 'Doctor'}

# 存储数据库查询结果
import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()

cursor.execute('SELECT name, age FROM employees')
results = cursor.fetchall()

# 函数返回多个值
def get_coordinates():
    x = 10
    y = 20
    return x, y

x, y = get_coordinates()

​

 9 元组(Tuple)和列表(List)的区别

 元组(Tuple)和列表(List)是 Python 中两种常用的数据结构,它们有以下主要区别:

  • 可变性(Mutability):

    • 元组是不可变的数据结构,一旦创建后,其元素不能被修改、添加或删除。这意味着元组的内容是固定的,无法进行更改。
    • 列表是可变的数据结构,可以随时修改、添加或删除其中的元素。
  • 语法表示:

    • 元组使用圆括号 () 来表示,例如:my_tuple = (1, 2, 3)
    • 列表使用方括号 [] 来表示,例如:my_list = [1, 2, 3]
  • 性能:

    • 由于元组是不可变的,它在一些操作上比列表更快速,例如访问元素、遍历等。这是因为在不可变对象上的操作更加高效。
    • 列表由于可变性,执行修改操作可能需要重新分配内存和复制元素,因此在某些情况下可能比元组更慢。
  • 用途:

    • 元组适用于表示一组不可变的数据,如坐标点、日期时间等。当你希望数据不被修改时,可以使用元组。
    • 列表适用于表示一组可变的数据,如列表中的元素可以随时增加、删除、修改。当你需要一个动态变化的数据集合时,可以使用列表。

 下面是一些示例,说明元组和列表之间的区别

# 元组示例
my_tuple = (1, 2, 3)
print(my_tuple[0])  # 访问元组中的元素,输出: 1

# 列表示例
my_list = [4, 5, 6]
my_list[0] = 10  # 修改列表中的元素
print(my_list)  # 输出: [10, 5, 6]

# 尝试修改元组中的元素,会引发异常
# my_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

# 添加元素到列表
my_list.append(7)
print(my_list)  # 输出: [10, 5, 6, 7]

# 删除列表中的元素
del my_list[1]
print(my_list)  # 输出: [10, 6, 7]

注意:

 

 

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

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

相关文章

Codeforces Round 886 (Div. 4)

目录 A. To My Critics B. Ten Words of Wisdom C. Word on the Paper D. Balanced Round E. Cardboard for Pictures F. We Were Both Children G. The Morning Star A. To My Critics time limit per test1 second m…

《qt quick核心编程》笔记一

1.基础HelloWorld代码 import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 400height: 300visible: truetitle: qsTr("Hello 1World")Rectangle {width: parent.widthheight: parent.heightcolor: "gray"Text {…

RabbitMQ惰性队列使用

说明:惰性队列是为了解决消息堆积问题,当生产者生产消息的速度远高于消费者消费消息的速度时,消息会大量的堆积在队列中,而队列中存放的消息数量是有限的,当超出数量时,会造成消息的丢失。而扩容队列&#…

Homography单应性矩阵

1. Homography 单应性概念 考虑 同一个平面(比如书皮)的两张图片,红点表示同一个物理坐标点在两张图片上的各自位置。在 CV 术语中,我们称之为对应点。 Homography 就是将一张图像上的点映射到另一张图像上对应点的3x3变换矩阵. 因为 Homography 是一个 …

AtcoderABC237场

A - Not OverflowA - Not Overflow 题目大意 题目要求判断给定的整数N是否在范围[-231, 231-1]内,如果是则输出"Yes",否则输出"No"。 思路分析 位运算:由于题目中的范围是2的幂次方,可以使用位运算来进行快…

Elasticsearch/Enterprise Search/Kibana安装记录

目录 Elasticsearch的安装导入 elasticsearch PGP密钥 安装使用APT安装手动下载安装 启动elasticsearch安全功能重新配置节点以加入现有集群启用系统索引的自动创建功能运行Elasticsearch(在systemd下)检查Elasticsearch是否正在运行Elasticsearch配置外网访问 第三方包安装ela…

flex局部的知识总结

一、Flex布局的基本概念。 (1)Flex布局: 任何一个容器都可以指定为Flex布局。 注意:设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。 (2)Flex容器:采用Flex布局…

Linux环境下Elasticsearch相关软件安装

Linux环境下Elasticsearch相关软件安装 本文将介绍在linux(Centos7)环境下安装Elasticsearch相关的软件。 1、安装Elasticsearch 1.1 Elasticsearch下载 首先去Elasticsearch官网下载相应版本的安装包,下载之后传输到linux服务器上。 官网地址:http…

Sony索尼CMOS图像传感器SubLVDS与SLVS-EC接口FPGA开发方案

索尼Sony公司的工业CMOS图像传感器主要有3种接口:Sub-LVDS、SLVS、SLVS-EC。 Sub-LVDS接口的CMOS主要是IMX2XX系列和IMX3XX系列的一部分型号,例如IMX250,IMX252、IMX255、IMX392、IMX304等。 SLVS与SLVS-EC接口的CMOS主要是IMX3XX系列的一部分…

ReviewTools-iOS混淆工具

ReviewTools-iOS混淆工具 下载 一键混淆 拖拽或点击上传项目,然后选择一个代码库即可开始对项目混淆。 一键混淆默认开启了所有的混淆选项,开启字符串加密功能需要手动选择一种加密方式。混淆单词以及垃圾代码均来自于大量Github项目,完美解决…

使用css给图片添加酷炫标题的几种方式

使用css给图片添加酷炫标题的几种方式 在本文章中,将会向大家展示如何使用 CSS3 创建具有各种过渡动画的图像标题。 浏览器支持情况 这些方式将在很大程度上依赖于css3的transform和transition属性,这些属性是相对较新的功能,因此&#xf…

设计模式原则

1、设计模式七大原则 1.1 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 代码重…

抖音短视频seo矩阵系统源码解析与技术实现

抖音短视频SEO矩阵系统源码解析与技术实现涉及到多个方面的技术,包括算法、网络爬虫、数据挖掘、自然语言处理、数据库设计等。 一、 以下是一些实现此系统的技术要点和步骤: 数据采集和处理 首先,需要对抖音短视频进行数据采集。这可以通过编…

【Linux进程】进程控制(上) {进程创建:fork的用法,fork的工作流程,写时拷贝;进程终止:3种退出情况,退出码,常见的退出方法}

一、进程创建 1.1 fork的初步认识和基本使用 在linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void);返回值&#xff1a;子进程中返回0&#xff0c;父进…

批量AI智剪:让您的短视频制作更加轻松有趣!

在如今的社交媒体时代&#xff0c;短视频已经成为了人们表达创意和分享生活的重要方式。然而&#xff0c;对于许多人来说&#xff0c;短视频制作却是一项繁琐且技术要求较高的任务。幸运的是&#xff0c;现在有了AI智剪&#xff0c;让您的短视频制作变得更加轻松有趣&#xff0…

java小区物业管理系统

java小区物业管理系统 计算机小区物业管理系统 ssh小区物业管理系统 基于javasshmysql小区物业管理系统的设计与实现 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;8.x版本都可&a…

3.18 Bootstrap 列表组(List Group)

文章目录 Bootstrap 列表组&#xff08;List Group&#xff09;向列表组添加徽章向列表组添加链接向列表组添加自定义内容 Bootstrap 列表组&#xff08;List Group&#xff09; 本章我们将讲解列表组。列表组件用于以列表形式呈现复杂的和自定义的内容。创建一个基本的列表组的…

使用 Solon Cloud 的 Jaeger 做请求链路跟踪

<dependency><groupId>org.noear</groupId><artifactId>jaeger-solon-cloud-plugin</artifactId> </dependency>1、描述 分布式扩展插件。基于 jaeger 适配的 solon cloud 插件。基于 opentracing 开放接口提供链路跟踪支持。 2、配置示…

vulnhub打靶--raven

目录 vulnhub--raven1.nmap扫描端口服务2.点击主页service发现wordpress目录&#xff0c;识别为wordpress3.使用wpscan扫描4.扫描网站发现两个用户5.简单尝试下发现michael用户名和密码一致6.提权7.总结 vulnhub–raven 下载地址&#xff1a;raven 1.nmap扫描端口服务 2.点击…

Spring:xml 配置

Bean 配置xml 配置反射模式工厂方法模式Factory Bean 模式配置 在 Spring 中,配置 bean 实例一般使用 xml 配置方式或注解(Annontation) 方式进行配置。 xml 配置 在 xml 配置中分为三种方式,分别为反射模式、工厂方法模式和 Factory Bean 模式。 反射模式:指通过指定 …