1. 元组基础
-
定义:用圆括号
()
或tuple()
创建,元素不可变。
t1 = (1, 2, 3) # 标准定义 t2 = 4, 5, 6 # 省略括号(隐式元组) t3 = tuple([7, 8, 9]) # 从列表转换 empty_tuple = () # 空元组 single_item = (10,) # 单元素元组(必须加逗号)
2. 元组操作
操作/方法 | 语法 | 示例 | 说明 |
---|---|---|---|
索引访问 | tuple[index] |
t1[1] → 2 |
支持正向/负向索引 |
切片访问 | tuple[start:end:step] |
t1[1:3] → (2, 3) |
返回新元组 |
拼接元组 | + 操作符 |
t1 + (4, 5) → (1, 2, 3, 4, 5) |
生成新元组 |
重复元组 | * 操作符 |
t1 * 2 → (1, 2, 3, 1, 2, 3) |
生成新元组 |
统计元素次数 | tuple.count(value) |
t1.count(2) → 1 |
返回元素出现次数 |
查找元素索引 | tuple.index(value) |
t1.index(3) → 2 |
返回第一个匹配的索引 |
存在性检查 | value in tuple |
3 in t1 → True |
返回布尔值 |
3. 元组特性
(1) 不可变性
-
元组创建后不能修改、删除或添加元素,但可重新赋值整个元组。
t = (1, 2, 3) # t[0] = 10 → 报错:TypeError t = (10, 20) # 重新赋值合法
(2) 解包(Unpacking)
- 将元组元素直接赋值给变量:
a, b, c = (1, 2, 3) print(a, b, c) # 输出:1 2 3
(3) 嵌套元组
- 元组可嵌套其他容器(如列表、元组):
nested = (1, [2, 3], ("a", "b")) nested[1][0] = 99 # 修改内部列表合法 → (1, [99, 3], ("a", "b"))
(4) 哈希性
- 元组若包含不可变元素,可作为字典的键:
dict_key = {("Alice", 25): "Engineer"} # 合法
4. 元组 vs 列表
特性 | 元组(Tuple) | 列表(List) |
---|---|---|
可变性 | 不可变 | 可变 |
语法 | () |
[] |
性能 | 内存占用更小,访问更快 | 增删元素性能更高 |
适用场景 | 数据保护、字典键、函数返回值 | 动态数据操作 |
5. 常见应用场景
- 保护数据安全
config = ("192.168.1.1", 8080) # 防止意外修改
- 函数返回多个值
def get_coordinates(): return 10.5, 20.3 x, y = get_coordinates()
- 字典的键
locations = { (35.68, 139.69): "Tokyo" }
- 格式化字符串
print("%s is %d years old" % ("Alice", 25))
6. 转换与遍历
(1) 与列表相互转换
my_list = [1, 2, 3] tuple_from_list = tuple(my_list) # (1, 2, 3) list_from_tuple = list(tuple_from_list) # [1, 2, 3]
(2) 遍历元组
for item in (1, 2, 3): print(item) # 输出:1 → 2 → 3
7. 注意事项
- 单元素元组的陷阱
not_a_tuple = (10) # 类型是 int,不是元组 real_tuple = (10,) # 正确写法
- 不可变性的优势
- 数据安全:确保元组内容不被意外修改。
- 哈希性:可哈希类型才能作为字典的键。
总结示例
# 定义与解包 point = (3, 4) x, y = point print(f"坐标:({x}, {y})") # 输出:坐标:(3, 4) # 统计与查找 colors = ("red", "green", "blue", "green") print(colors.count("green")) # 输出:2 print(colors.index("blue")) # 输出:2 # 元组作为字典键 scores = {("Alice", "Math"): 95, ("Bob", "Science"): 88} print(scores[("Alice", "Math")]) # 输出:95
元组是 Python 中高效、安全的数据容器,适用于需要不可变性和固定结构的场景!
本站https://ygz.ink文章https://ygz.ink/archives/1938.html中提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。本站部分信息来自博主网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
邮箱:gouweicaosheji@163.com