【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


目录
相关文章
|
1月前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
38 0
|
1月前
|
Python
Python 中常见的数据结构(二)
Python 中常见的数据结构(二)
|
1月前
|
存储 索引 Python
Python 中常见的数据结构(一)
Python 中常见的数据结构(一)
|
1月前
|
开发者 Python
Python 常用的数据结构
Python 常用的数据结构
|
1月前
|
存储 索引 Python
python数据结构之列表详解
列表是Python中极为灵活和强大的数据结构,适合于存储和操作有序数据集合。掌握其基本操作和高级特性对于编写高效、清晰的Python代码至关重要。通过本回答,希望能帮助你全面理解Python列表的使用方法,从而在实际编程中更加游刃有余。
23 0
|
1月前
|
存储 Python
Python 中常见的数据结构(三)
Python 中常见的数据结构(三)
|
1月前
|
算法 Python
逆袭之路!用 Python 玩转图的 DFS 与 BFS,让数据结构难题无处遁形
在数据结构的广袤领域中,图是一种强大而复杂的结构,而深度优先搜索(DFS)和广度优先搜索(BFS)则是遍历图的两把利剑。Python 以其简洁和强大的特性,为我们提供了实现和运用这两种算法的便捷途径。
74 0
|
1月前
|
程序员 Python 容器
python 中的 collections 模块:常用数据结构和工具详解
python 中的 collections 模块:常用数据结构和工具详解
14 0
|
2月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构—字典
Python常用数据结构—字典
|
2月前
|
存储 索引 Python
Python编程的常用数据结构—列表
Python编程的常用数据结构—列表
下一篇
无影云桌面