Python 学习笔记第五期——组合数据类型列表、元组、集合与字典精讲——核心知识点自测与详解本自测解析针对 Python 学习笔记系列第五期组合数据类型列表、元组、集合与字典精讲的核心内容。共 10 题每题包含题目回顾、考查知识点、详细解答与分析帮助读者巩固 Python 组合数据类型的核心技能。文章索引Python 学习笔记第五期——组合数据类型列表、元组、集合与字典精讲更多自我检测系列欢迎浏览每日知识点小问答我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~第五期组合数据类型第 1-5 题题目一序列类型概述与索引机制题目Python 中的序列类型包括哪些请说明序列类型的“双向索引”机制并写出以下代码的输出结果。pythontext Python print(text[0]) print(text[-1]) print(text[1:4]) print(text[::-1])考查知识点序列类型概述 —— 第五期 §1双向索引与切片 —— 第五期 §1详细解答序列类型包括序列类型特点是否可变字符串str字符序列❌ 不可变列表list任意元素序列✅ 可变元组tuple任意元素序列❌ 不可变双向索引机制text字符串 Python 的索引示例 正向索引 0 1 2 3 4 5 ┌────┬────┬────┬────┬────┬────┐ │ P │ y │ t │ h │ o │ n │ └────┴────┴────┴────┴────┴────┘ 反向索引 -6 -5 -4 -3 -2 -1代码输出pythonprint(text[0]) # P正向索引第1个字符 print(text[-1]) # n反向索引第1个字符即最后1个 print(text[1:4]) # yth切片索引1到3不包含4 print(text[::-1]) # nohtyP步长为-1反转字符串题目二列表的创建与访问题目请写出以下代码的输出结果并说明列表切片[start:end:step]中三个参数的含义。pythonfruits [苹果, 香蕉, 橙子, 葡萄, 西瓜] print(fruits[0]) print(fruits[-1]) print(fruits[1:4]) print(fruits[::2]) print(fruits[::-1])考查知识点列表的创建与访问 —— 第五期 §2.1、§2.2切片语法 —— 第五期 §2.2详细解答代码输出text苹果 西瓜 [香蕉, 橙子, 葡萄] [苹果, 橙子, 西瓜] [西瓜, 葡萄, 橙子, 香蕉, 苹果]切片参数含义参数含义示例start起始索引包含fruits[1:4]从索引1开始end结束索引不包含fruits[1:4]到索引3结束step步长每隔几个取一个fruits[::2]每隔2个取1个⚠️ 注意切片返回的是新列表原列表不变。[::-1]是反转列表的经典写法。题目三列表的添加与删除操作题目请写出以下代码的输出结果并说明append()、extend()、insert()三个方法的区别。pythonnumbers [1, 2, 3] numbers.append(4) print(numbers) numbers.extend([5, 6]) print(numbers) numbers.insert(0, 0) print(numbers)考查知识点列表添加元素 —— 第五期 §2.3三种添加方法的区别 —— 第五期 §2.3详细解答代码输出text[1, 2, 3, 4] [1, 2, 3, 4, 5, 6] [0, 1, 2, 3, 4, 5, 6]三种添加方法对比方法作用示例结果append(x)在末尾添加单个元素[1,2].append(3)[1,2,3]extend(iterable)在末尾添加多个元素逐个[1,2].extend([3,4])[1,2,3,4]insert(i, x)在指定位置插入元素[1,2,3].insert(1,99)[1,99,2,3]⚠️ 易错点append([3,4])会将整个列表作为一个元素添加结果为[1,2,[3,4]]而extend([3,4])会逐个添加元素结果为[1,2,3,4]。题目四列表的排序与反转题目请写出以下代码的输出结果并说明sort()和sorted()的区别。pythonnumbers [6, 2, 5, 3, 1, 4] numbers.sort() print(numbers) numbers.sort(reverseTrue) print(numbers) original [3, 1, 4, 1, 5] new_sorted sorted(original) print(original) print(new_sorted)考查知识点列表排序 —— 第五期 §2.5sort()vssorted()—— 第五期 §2.5详细解答代码输出text[1, 2, 3, 4, 5, 6] [6, 5, 4, 3, 2, 1] [3, 1, 4, 1, 5] [1, 1, 3, 4, 5]sort()vssorted()对比对比维度list.sort()sorted(list)是否原地修改✅ 是修改原列表❌ 否返回新列表返回值None排序后的新列表适用场景不需要保留原列表需要保留原列表其他排序方法方法作用示例reverse()反转列表顺序原地修改[1,2,3].reverse()→[3,2,1]sort(keylen)按指定规则排序按字符串长度排序题目五列表推导式题目请分别用传统for循环和列表推导式生成 1 到 10 的平方数列表。列表推导式相比传统for循环有哪些优势考查知识点列表推导式 —— 第五期 §2.6详细解答传统for循环pythonsquares [] for i in range(1, 11): squares.append(i ** 2) print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]列表推导式pythonsquares [i ** 2 for i in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]带条件的列表推导式扩展python# 只保留 1~20 中的偶数 evens [i for i in range(1, 21) if i % 2 0] print(evens) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]列表推导式的优势优势说明代码简洁一行代码替代多行循环可读性好逻辑清晰表达直观性能略优在简单场景下比for循环稍快第五期组合数据类型第 6-10 题题目六元组的特点与不可变性题目请写出以下代码的输出结果并解释为什么(5)和(5,)的结果不同。元组有哪些主要特点pythont1 (1, 2, 3) print(t1[0]) t2 (5) t3 (5,) print(type(t2)) print(type(t3))考查知识点元组的创建与访问 —— 第五期 §3.1、§3.2单元素元组的特殊写法 —— 第五期 §3.1元组的不可变性 —— 第五期 §3.3详细解答代码输出text1 class int class tuple为什么(5)和(5,)不同写法类型原因(5)int圆括号被解释为数学运算优先级不是元组(5,)tuple逗号告诉 Python 这是元组单元素元组必须加逗号元组的主要特点特点说明不可变一旦创建不能增删改元素有序元素有固定顺序支持索引和切片可哈希可以作为字典的键或集合的元素性能更好比列表占用内存更小访问速度更快题目七集合的去重与集合运算题目请写出以下代码的输出结果并说明集合的三大特性。集合中能存放列表吗为什么pythons1 set([1, 2, 2, 3, 3, 4]) print(s1) A {1, 2, 3, 4, 5} B {4, 5, 6, 7, 8} print(A | B) print(A B) print(A - B) print(A ^ B)考查知识点集合的创建与去重 —— 第五期 §4.1集合运算 —— 第五期 §4.3集合的三大特性 —— 第五期 §1详细解答代码输出text{1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 7, 8} {4, 5} {1, 2, 3} {1, 2, 3, 6, 7, 8}集合的三大特性特性含义确定性任何一个元素是否在集合中是确定的互异性集合中的元素互不相同自动去重无序性集合中的元素没有顺序为什么集合不能存放列表集合的元素必须是不可变类型可哈希列表是可变类型不能作为集合元素同理字典、集合本身也不能作为集合元素✅ 可存放数字、字符串、元组题目八字典的创建与访问题目请写出以下代码的输出结果并说明字典的键必须满足什么条件使用get()方法访问字典有什么好处pythonperson {name: 张三, age: 18, city: 北京} print(person[name]) print(person.get(city)) print(person.get(score)) print(person.get(score, 0))考查知识点字典的创建与访问 —— 第五期 §5.1、§5.2get()方法 —— 第五期 §5.2字典键的约束条件 —— 第五期 §5.6详细解答代码输出text张三 北京 None 0字典键的约束条件条件说明唯一性每个键只能对应一个值键不能重复不可变键必须是不可变类型字符串、数字、元组❌不能作为键的类型列表、字典、集合可变类型get()方法的优势对比dict[key]dict.get(key)键不存在时抛出KeyError返回None或指定默认值适用场景确定键一定存在键可能不存在需要安全访问题目九字典的添加、修改与删除题目请写出以下代码的输出结果并说明修改字典元素和添加字典元素在语法上有什么区别。pythonperson {name: 张三, age: 18} person[city] 北京 print(person) person[age] 20 print(person) person.update({age: 22, job: 工程师}) print(person) del person[city] print(person)考查知识点字典元素的添加与修改 —— 第五期 §5.3字典元素的删除 —— 第五期 §5.4update()方法 —— 第五期 §5.3详细解答代码输出text{name: 张三, age: 18, city: 北京} {name: 张三, age: 20, city: 北京} {name: 张三, age: 22, city: 北京, job: 工程师} {name: 张三, age: 22, job: 工程师}添加与修改的区别操作语法效果添加dict[新键] 值键不存在时新增键值对修改dict[已存在键] 新值键已存在时更新对应的值 关键点Python 字典的添加和修改使用完全相同的语法区别仅在于键是否已存在。所以dict[key] value既是添加也是修改。字典的删除方法方法作用del dict[key]删除指定键键不存在时抛出KeyErrordict.pop(key)删除指定键并返回对应的值dict.popitem()随机删除一个键值对dict.clear()清空所有元素题目十组合数据类型对比与综合实战题目请从是否可变、是否有序、元素是否唯一三个维度对比list、tuple、set、dict四种数据类型。结合“十大歌手评分系统”实战说明为什么在计算最终得分时使用列表排序比使用集合更合适考查知识点四种数据类型对比 —— 第五期 总结综合实战解析 —— 第五期 §7.1详细解答四种数据类型对比表类型是否可变是否有序元素是否唯一创建示例list列表✅ 可变✅ 有序❌ 允许重复[1, 2, a]tuple元组❌ 不可变✅ 有序❌ 允许重复(1, 2, a)set集合✅ 可变❌ 无序✅必须唯一{1, 2, 3}dict字典✅ 可变❌ 无序Py3.7按插入顺序键必须唯一{name: Tom}为什么“十大歌手评分”使用列表而不是集合pythonscores [9.5, 8.8, 9.2, 7.5, 9.8, 9.0, 8.5, 9.3, 8.9, 9.1] scores.sort() valid_scores scores[1:-1] # 去掉最高分和最低分 average sum(valid_scores) / len(valid_scores)原因分析原因说明需要排序集合是无序的无法进行排序操作需要切片集合不支持切片无法用[1:-1]去掉最高最低分需要索引集合不支持索引访问无法获取单个元素允许重复评分可能存在相同分数集合会自动去重丢失数据附知识点对应总表题号主要考查知识点对应笔记章节1第五期 §1 序列类型概述与双向索引2第五期 §2.1 列表创建§2.2 列表访问与切片3第五期 §2.3 列表添加方法append/extend/insert4第五期 §2.5 列表排序sort vs sorted5第五期 §2.6 列表推导式6第五期 §3.1 元组创建§3.3 元组不可变性7第五期 §1 集合三大特性§4.3 集合运算8第五期 §5.1 字典创建§5.2 字典访问与 get()9第五期 §5.3 字典添加与修改§5.4 字典删除10第五期 总结四种类型对比§7.1 综合实战学习建议对于答错的题目请回看第五期对应章节并动手在 Python 交互式环境中执行相关命令。组合数据类型是 Python 编程中最常用的数据结构熟练掌握列表、元组、集合、字典的各自特性和适用场景是写出高质量 Python 代码的基础。— Compiled and Authored by Whisky — July 22nd, 2026