【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


目录
打赏
0
0
0
0
20
分享
相关文章
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
122 15
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
102 6
基于Python访问Hive的pytest测试代码实现
|
6月前
|
Python中的tuple:探索其强大功能与实用技巧
Python中的tuple:探索其强大功能与实用技巧
95 1
|
6月前
|
Java Python访问MongoDB
Java Python访问MongoDB
34 4
python 的 tuple(元组) 是不是冗余设计?
python 的 tuple(元组) 是不是冗余设计?
120 4
WK
|
6月前
|
如何在Python中访问字典中的值
在Python中,访问字典(Dictionary)中的值非常简单。字典是一种无序的集合,它存储了键值对(key-value pairs),其中每个键都是唯一的,并映射到一个值上。要访问字典中的值,你需要使用键作为索引。
WK
142 0
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)
【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)
103 0
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等