找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

619

积分

0

好友

75

主题
发表于 5 天前 | 查看: 22| 回复: 0

太棒了!你已经来到 Python 30天学习计划的第6天!🎉
今天我们将一次性掌握 Python 的另外三种核心容器类型:元组(tuple)、字典(dict)和集合(set)。它们和列表一起,构成了 Python 数据结构的“四大金刚”!

🎯 第6天目标:

✅ 理解并使用 元组(tuple) —— 不可变的有序序列
✅ 掌握 字典(dict) —— 键值对存储(最常用的数据结构之一)
✅ 学会使用 集合(set) —— 无序、不重复的元素集
✅ 能根据场景选择合适的容器类型

📘 一、元组(Tuple)——“不可变的列表”

🔹 特点:

  • 圆括号 () 定义(也可以省略)
  • 不可变:创建后不能修改、添加或删除元素
  • 有序,支持索引和切片
  • 常用于表示固定结构的数据(如坐标、RGB颜色、数据库记录)
# 创建元组
point = (3, 4)
rgb = (255, 128, 0)
person = \"李明\", 25, \"北京\" # 括号可省略!
print(point[0]) # 3
print(person[1:]) # (25, '北京')

# ❌ 以下操作会报错!
# point[0] = 5
# TypeError: 'tuple' object does not support item assignment

为什么用元组?

  • 安全性:防止意外修改
  • 性能略优于列表(因为不可变)
  • 可作为字典的键(列表不行!)

📘 二、字典(Dictionary)——“键值对”的映射

🔹 特点:

  • 花括号 {} 定义
  • 存储 键(key)→ 值(value) 的映射
  • 无序(但在Python 3.7及以上版本中,字典会保持插入顺序)
  • 键必须是不可变类型(如字符串、数字、元组),值可以是任意类型
# 创建字典
student = {
    \"name\": \"王芳\",
    \"age\": 20,
    \"courses\": [\"数学\", \"英语\"],
    \"is_graduate\": False
}

# 访问值
print(student[\"name\"]) # 王芳
print(student.get(\"age\"))  # 20(推荐用 .get(),避免 KeyError)

# 添加/修改
student[\"grade\"] = \"大二\"  # 新增键值对
student[\"age\"] = 21  # 修改已有键

# 删除
del student[\"is_graduate\"]

🔹 常用方法:

方法 作用
.keys() 返回所有键(类似列表)
.values() 返回所有值
.items() 返回键值对元组列表
.get(key, default) 安全获取值,不存在时返回默认值

遍历字典(提前预览循环):

for key in student:
    print(f\"{key}: {student[key]}\")

# 或更优雅地:
for key, value in student.items():
    print(f\"{key} → {value}\")

📘 三、集合(Set)——“去重工具箱”

🔹 特点:

  • 花括号 {}set() 创建
  • 无序、元素唯一(自动去重)
  • 元素必须是不可变类型(不能放列表、字典)
  • 支持数学中的集合运算:交集、并集、差集等
# 创建集合
fruits = {\"苹果\", \"香蕉\", \"橙子\"}
nums = set([1, 2, 2, 3, 3, 3]) # 自动去重 → {1, 2, 3}

# 添加/删除
fruits.add(\"葡萄\")
fruits.remove(\"香蕉\") # 若不存在会报错
fruits.discard(\"西瓜\") # 若不存在,不报错

# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(\"并集:\", a | b) # {1, 2, 3, 4, 5}
print(\"交集:\", a & b) # {3}
print(\"差集 a-b:\", a - b) # {1, 2}
print(\"对称差集:\", a ^ b) # {1, 2, 4, 5}

典型用途

  • 去除列表重复项:list(set(my_list))
  • 快速判断元素是否存在(利用哈希表实现,比列表的线性查找快得多!)

🧠 四、四种容器对比总结

容器 符号 有序? 可变? 允许重复? 典型用途
列表(list) [ ] 存储有序数据(成绩、任务)
元组(tuple) ( ) 固定结构(坐标、配置)
字典(dict) { } ⚠️(3.7+保序) 键唯一 映射关系(用户信息、配置表)
集合(set) { } 去重、成员检测、集合运算

💡 如何选择?

  • 顺序 + 可改 → 列表
  • 顺序 + 不可改 → 元组
  • 键值对应 → 字典
  • 去重或快速查找 → 集合

💻 今日实战:day6.py

Python元组字典集合示例代码截图

✅ 今日小任务

1、创建一个字典,存储你的个人信息(姓名、年龄、城市、爱好列表)

2、用集合找出两个朋友的共同爱好
以下是一个包含元组的列表(还记得列表吗?)和集合运算的练习:

people = [
    (\"张三\", 18, \"上海\", [\"读书\", \"电影\"]),
    (\"李四\", 19, \"北京\", [\"编程\", \"旅行\"]),
    (\"王五\", 20, \"广州\", [\"读书\", \"编程\"])
]

my_hobbies = {\"读书\", \"跑步\", \"编程\"}
friend_hobbies = {\"电影\", \"编程\", \"旅行\"}
print(\"共同爱好:\", my_hobbies & friend_hobbies)

📝 小结

  • 元组:安全、不可变的序列
  • 字典:强大的键值映射,日常开发最常用之一
  • 集合:高效去重与集合运算
  • 根据需求选择合适的数据结构,是写出高效代码的关键!

🎉 恭喜完成第6天!
你现在已经掌握了 Python 的全部四种内置容器类型!这是迈向中级编程的重要一步!
理解这些基础数据结构,是未来构建复杂应用和深入学习如 PyPI 生态中高级库的基石。

继续加油,未来的开发者!👨‍💻👩‍💻 希望你在 云栈社区 的探索之旅中不断成长,发现更多编程的乐趣与深度。




上一篇:Mellanox网卡使用DPDK驱动时多线程并发操作导致线程挂起的原因分析与解决
下一篇:MySQL InnoDB引擎下count(*)、count(1)、count(字段)的性能差异与优化指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 04:03 , Processed in 0.307277 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表