智泊Python--Day6
智泊Python–Day6
Day6 是三类容器/集合类型与拷贝机制。元组(tuple)是「不可变列表」,适合放固定结构的数据;字典(dict)用「键-值」存储,是处理结构化数据(如接口 JSON)的主力;集合(set)靠「去重 + 集合运算」吃饭。最后是浅拷贝 vs 深拷贝——这是 Python 里极易踩坑的点,理解了它才算真正搞懂「变量到底存的是值还是引用」。
1.元组
元组用圆括号,一旦创建元素不可改(所以没有 append/remove)。创建时有一个经典坑:单元素元组必须加逗号 t = (1,),否则 t = (1) 只是个整数。元组支持索引、切片、遍历、+/*、in 判断,sorted() 会返回一个列表(不是元组)。还常用「解包」x, y = 3, 4 一次取出多个值,用 _ 占位不想要的元素。
1 | |
2.字典
字典是「键-值」映射:键唯一、键必须是不可变类型(一般用字符串)、无序。取值用 d["key"](不存在会报错)或 d.get("key", 默认值)(更安全的写法)。遍历推荐 for key in d 或 for k, v in d.items()。改值用 d["key"] = 新值(key 本身不可改,只能改对应的值);update() 合并另一个字典,重复键会被覆盖;pop(key) 删除键值对。
1 | |
3.字典练习(嵌套数据提取)
真实接口数据往往是「字典套列表套字典」的嵌套结构(如斗鱼接口)。提取思路:先按层级 douyu["data"]["rl"] 拿到主播列表,再遍历每个元素取 nickname / avatar。第二个练习是「列表推导式」的雏形——筛选成绩 ≥70 的字典组成新列表。
1 | |
4.集合
集合的特点是唯一(自动去重)+ 无序(无索引),元素必须不可变。两个坑:
- ①
{}是空字典不是空集合,空集合要写set() - ② 去重后顺序会变(集合不保序)
集合真正强大的是集合运算:& 交集、| 并集、- 差集、^ 对称差集、>= 判断超集。
1 | |
5.浅拷贝与深拷贝
理解拷贝前先分两类类型:不可变(int/float/str/tuple/bool/None)赋值互不影响;可变(list/dict/set)赋值是「两个变量指向同一个对象」,改一个另一个也变。.copy() 是浅拷贝——只复制第一层,如果元素里还嵌套可变对象(如列表里的列表),内层仍是共享引用;deepcopy()(来自 copy 模块)则完全独立,改谁都不影响谁。推荐用 pythontutor.com 可视化每一步的内存变化。
1 | |