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

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

40523bee8fbd4168920ca6a7934f7b2e.png      

元组(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]

注意:

17e5535371e54bdba0fc7069a9626134.png


目录
相关文章
|
28天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
137 59
|
2月前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
41 0
|
28天前
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
|
4天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
43 20
|
9天前
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
53 15
|
28天前
|
存储 开发者 索引
Python 中常见的数据结构
这些数据结构各有特点和适用场景,在不同的编程任务中发挥着重要作用。开发者需要根据具体需求选择合适的数据结构,以提高程序的效率和性能
|
28天前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
|
28天前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
2月前
|
Python
Python 中常见的数据结构(二)
Python 中常见的数据结构(二)
26 4
|
2月前
|
存储 索引 Python
Python 中常见的数据结构(一)
Python 中常见的数据结构(一)
45 3

热门文章

最新文章