Python中的Tuple操作
相关教程
- Python 基础教程
- 在 SublimeEditor 中配置 Python 环境
- Python 代码中添加注释
- Python 中的变量的使用
- Python 中的数据类型
- Python 中的关键字
- Python 字符串操作
- Python 中的 list 操作
- Python 中的 Tuple 操作
- Python max()和 min()–在列表或数组中查找最大值和最小值
- Python 找到最大的 N 个(前 N 个)或最小的 N 个项目
- Python 读写 CSV 文件
- Python 中使用 httplib2–HTTP GET 和 POST 示例
- Python 将 tuple 解包为变量或参数
- Python 解包 Tuple–太多值无法解压
- Python multidict 示例–将单个键映射到字典中的多个值
- Python OrderedDict–有序字典
- Python 字典交集–比较两个字典
- Python 优先级队列示例
Python 中的元组(Tuple)操作
在 Python 中,元组(Tuple) 类似于列表(List),但它是不可变(Immutable) 的,通常使用圆括号表示。
元组的主要特征包括:
- 不可变:创建后无法修改其元素。
- 有序:元素保持插入顺序。
- 异构:可以包含不同类型的元素。
- 可索引:支持从零开始的索引访问。
- 语法:使用圆括号(可选,但建议使用)。
- 性能:由于不可变性,在迭代过程中通常比列表更快。
元组非常适合用于创建包含相关信息的对象(例如员工信息记录)。换句话说,元组允许我们将相关信息“打包”在一起,并作为一个整体进行处理。
1. 创建元组
元组中的元素用圆括号括起来,并用逗号分隔。元组可以包含任意数量、不同类型的项。
语法:
tuple_var = (item1, item2, item3)元组示例:
tuple1 = () # 空元组
tuple2 = (1, "2", 3.0) # 包含不同类型元素
tuple3 = 1, "2", 3.0 # 圆括号可选,但仍被视为元组1.1 单元素元组
如果圆括号内仅包含一个元素且没有逗号,Python 不会将其视为元组。必须添加尾随逗号以明确指定其为元组。
示例:
tuple_with_one_element = ("hello", ) # 注意尾随逗号1.2 嵌套元组
包含另一个元组作为元素的元组,称为嵌套元组。
示例:
nested_tuple = ("hello", ("python", "world"))2. 访问元组元素
我们可以使用方括号内的索引来访问元组项。
- 正索引:从元组开头开始计数(从 0 开始)。
- 负索引:从元组末尾开始计数(从 -1 开始)。
- 切片(Slicing):使用索引范围创建一个新的元组。
- 范围规则:
[m:n]表示从位置m(包含)到位置n(不包含)。 - 嵌套访问:使用多重索引访问嵌套元组的元素。
访问示例:
tuple_var = ("a", "b", "c", "d", "e", "f")
print(tuple_var[0]) # a
print(tuple_var[1]) # b
print(tuple_var[-1]) # f
print(tuple_var[-2]) # e
print(tuple_var[0:3]) # ('a', 'b', 'c')
print(tuple_var[-3:-1])# ('d', 'e')
# 嵌套元组访问
tuple_nested = ("a", "b", "c", ("d", "e", "f"))
print(tuple_nested[3]) # ('d', 'e', 'f')
print(tuple_nested[3][0]) # d
print(tuple_nested[3][0:2])# ('d', 'e')3. 遍历元组
使用 for 循环遍历元组中的项。
示例:
tuple_var = ("a", "b", "c")
for x in tuple_var:
print(x)4. 检查元素是否存在
要检查元组是否包含给定元素,可以使用 in 和 not in 关键字。
示例:
tuple_var = ("a", "b", "c", "d", "e", "f")
if "a" in tuple_var:
print("Yes, 'a' is present") # Yes, 'a' is present
if "p" not in tuple_var:
print("No, 'p' is not present") # No, 'p' is not present5. 元组排序
使用内置的 sorted() 函数对元组内的元素进行排序。请注意,sorted() 返回的是一个列表(List),而不是元组。
示例:
tuple_var = ("a", "c", "b", "d", "f", "e")
sorted_tuple = sorted(tuple_var)
print(sorted_tuple) # ['a', 'b', 'c', 'd', 'e', 'f']6. 重复与连接
重复:将元组乘以因子 N 可重复其所有元素。
示例:
tuple_var = ("a", "b")
repeated_tuple = tuple_var * 3
print(repeated_tuple) # ('a', 'b', 'a', 'b', 'a', 'b')连接:使用 + 运算符连接两个或多个元组。
示例:
tuple1 = ("a", "b", "c")
tuple2 = ("d", "e", "f")
joined_tuple = tuple1 + tuple2
print(joined_tuple) # ('a', 'b', 'c', 'd', 'e', 'f')7. 打包与解包
打包(Packing) 是指将一组值分配给一个变量的操作。在打包时,元组中的所有项目被分配给一个元组对象。
示例:
tuple_var = ("a", "b", "c") # 打包解包(Unpacking) 是指将元组中的各个项目分配给各个变量的操作。
示例:
tuple_var = ("a", "b", "c") # 打包
(x, y, z) = tuple_var # 解包
print(x) # a
print(y) # b
print(z) # c在解包期间,等号左侧变量的数量必须与右侧元组中的元素数量一致,否则会抛出错误。
解包错误示例:
tuple_var = ("a", "b", "c") # 打包
# 错误:值太多,无法解包(期望 2 个,得到 3 个)
(x, y) = tuple_var # ValueError: too many values to unpack (expected 2)
# 错误:值不足,无法解包(期望 4 个,得到 3 个)
(x, y, z, i) = tuple_var # ValueError: not enough values to unpack (expected 4, got 3)8. 命名元组(Named Tuples)
Python 的 collections 模块提供了一种名为 namedtuple() 的特殊工厂函数。
命名元组类似于字典,但支持通过索引和属性名(键)进行访问,而普通字典仅支持按键访问。
示例:
import collections
Record = collections.namedtuple('Record', ['id', 'name', 'date'])
R1 = Record('1', 'My Record', '12/12/2020')
# 通过索引访问
print("Record id is:", R1[0]) # Record id is: 1
# 通过键名访问
print("Record name is:", R1.name) # Record name is: My Record9. 元组常用内置函数
以下内置函数适用于元组对象(注意:它们是内置函数,而非元组的方法)。
9.1 any()
如果元组中至少有一个元素为真,则返回 True;如果元组为空,则返回 False。
print(any(())) # 空元组 - False
print(any((1,))) # 单元素元组 - True
print(any((1, 2))) # 常规元组 - True9.2 min()
返回元组中的最小元素。
tuple_var = (4, 1, 2, 6, 9)
print(min(tuple_var)) # 19.3 max()
返回元组中的最大元素。
tuple_var = (4, 1, 2, 6, 9)
print(max(tuple_var)) # 99.4 len()
返回元组的长度(元素个数)。
tuple_var = (4, 1, 2, 6, 9)
print(len(tuple_var)) # 59.5 sum()
返回元组中所有元素(数值型)的总和。
tuple_var = (4, 1, 2, 6, 9)
print(sum(tuple_var)) # 2210. 总结
综上所述,元组是不可变、有序且可索引的异构元素集合。它可以带圆括号编写,也可以不带(但建议带上)。
元组对于创建对象类型和实例非常有用。元组支持类似于 list 类型的操作,主要区别在于我们不能更改元组中的元素。
学习愉快!
说明:本文内容基于 Python 3 版本。部分内置函数(如 sorted)返回的是列表而非元组,使用时请注意数据类型转换。 版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/python-zhong-de-tuple-cao-zuo.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。