当前位置: 首页 > news >正文

Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解

Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解

本自测解析针对 Python 学习笔记系列第五期(组合数据类型:列表、元组、集合与字典精讲)的核心内容。共 10 题,每题包含题目回顾、考查知识点、详细解答与分析,帮助读者巩固 Python 组合数据类型的核心技能。

文章索引:
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲

更多自我检测系列欢迎浏览:每日知识点小问答

我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~

第五期:组合数据类型(第 1-5 题)

题目一:序列类型概述与索引机制

题目:Python 中的序列类型包括哪些?请说明序列类型的“双向索引”机制,并写出以下代码的输出结果。

python

text = "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

代码输出

python

print(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]中三个参数的含义。

python

fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"] 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()三个方法的区别。

python

numbers = [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()的区别。

python

numbers = [6, 2, 5, 3, 1, 4] numbers.sort() print(numbers) numbers.sort(reverse=True) print(numbers) original = [3, 1, 4, 1, 5] new_sorted = sorted(original) print(original) print(new_sorted)
考查知识点
  • 列表排序 —— 第五期 §2.5
  • sort()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(key=len)按指定规则排序按字符串长度排序

题目五:列表推导式

题目:请分别用传统for循环列表推导式生成 1 到 10 的平方数列表。列表推导式相比传统for循环有哪些优势?

考查知识点
  • 列表推导式 —— 第五期 §2.6
详细解答

传统for循环

python

squares = [] for i in range(1, 11): squares.append(i ** 2) print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表推导式

python

squares = [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,)的结果不同。元组有哪些主要特点?

python

t1 = (1, 2, 3) print(t1[0]) t2 = (5) t3 = (5,) print(type(t2)) print(type(t3))
考查知识点
  • 元组的创建与访问 —— 第五期 §3.1、§3.2
  • 单元素元组的特殊写法 —— 第五期 §3.1
  • 元组的不可变性 —— 第五期 §3.3
详细解答

代码输出

text

1 <class 'int'> <class 'tuple'>

为什么(5)(5,)不同

写法类型原因
(5)int圆括号被解释为数学运算优先级,不是元组
(5,)tuple逗号告诉 Python 这是元组,单元素元组必须加逗号

元组的主要特点

特点说明
不可变一旦创建,不能增删改元素
有序元素有固定顺序,支持索引和切片
可哈希可以作为字典的键或集合的元素
性能更好比列表占用内存更小,访问速度更快

题目七:集合的去重与集合运算

题目:请写出以下代码的输出结果,并说明集合的三大特性。集合中能存放列表吗?为什么?

python

s1 = 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()方法访问字典有什么好处?

python

person = {"name": "张三", "age": 18, "city": "北京"} print(person["name"]) print(person.get("city")) print(person.get("score")) print(person.get("score", 0))
考查知识点
  • 字典的创建与访问 —— 第五期 §5.1、§5.2
  • get()方法 —— 第五期 §5.2
  • 字典键的约束条件 —— 第五期 §5.6
详细解答

代码输出

text

张三 北京 None 0

字典键的约束条件

条件说明
唯一性每个键只能对应一个值,键不能重复
不可变键必须是不可变类型(字符串、数字、元组)
不能作为键的类型列表、字典、集合(可变类型)

get()方法的优势

对比dict[key]dict.get(key)
键不存在时抛出KeyError返回None(或指定默认值)
适用场景确定键一定存在键可能不存在,需要安全访问

题目九:字典的添加、修改与删除

题目:请写出以下代码的输出结果,并说明修改字典元素和添加字典元素在语法上有什么区别。

python

person = {"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.4
  • update()方法 —— 第五期 §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]删除指定键(键不存在时抛出KeyError
dict.pop(key)删除指定键并返回对应的值
dict.popitem()随机删除一个键值对
dict.clear()清空所有元素

题目十:组合数据类型对比与综合实战

题目:请从是否可变是否有序元素是否唯一三个维度对比listtuplesetdict四种数据类型。结合“十大歌手评分系统”实战,说明为什么在计算最终得分时使用列表排序比使用集合更合适?

考查知识点
  • 四种数据类型对比 —— 第五期 总结
  • 综合实战解析 —— 第五期 §7.1
详细解答

四种数据类型对比表

类型是否可变是否有序元素是否唯一创建示例
list(列表)✅ 可变✅ 有序❌ 允许重复[1, 2, "a"]
tuple(元组)❌ 不可变✅ 有序❌ 允许重复(1, 2, "a")
set(集合)✅ 可变❌ 无序必须唯一{1, 2, 3}
dict(字典)✅ 可变❌ 无序(Py3.7+按插入顺序)必须唯一{"name": "Tom"}

为什么“十大歌手评分”使用列表而不是集合

python

scores = [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/insert)
4第五期 §2.5 列表排序(sort vs sorted)
5第五期 §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
http://www.jsqmd.com/news/1244695/

相关文章:

  • AI重构需求分析:程序员效率提升实战指南
  • AI项目从入门到上线16-你的Agent为什么总干错活?多Agent角色设计与任务分配终极指南
  • 阜阳市天车龙门吊行车吊机起重机采购销售维修安装维保改造本地厂家全指南 - 我叫一
  • Python深度学习入门:从环境配置到模型部署实战
  • 泰安本地财务合规账务处理优质公司怎么选才放心 - 品牌优推
  • Unity抗锯齿实战:SMAA插件配置与性能调优指南
  • 嵌入式HMI开发实战:基于Stellaris图形库的界面构建与优化
  • 母婴用纸哪家好:【联盛森宝】亲肤呵护 - MXyuyu
  • 如果关注瑞德克斯安全核验,是否清楚?
  • 内存覆盖和内存交换
  • 餐饮后厨视频监管方案:技术架构与实施指南
  • 【会议征稿通知 | 长安大学、早稻田大学主办 | IEEE出版 | IEEE Xplore、EI 、Scopus稳定检索】2026年智能物联网与智慧生活国际学术会议(IoT-Life 2026)
  • 小红书去水印工具推荐:2026年个人收藏学习向实用教程 - 免费软件工具方法教程
  • Gemini 3.6 Flash 对比 Claude:正面交锋
  • 元宝金条机器厂家批发 高性价比采购实用参考指南 - 品牌优推
  • PLC通信与故障处理16-PLC通信坏了别慌!7步诊断法从物理层到应用层全覆盖,参数全对、设备全新,通信就是死活不通?因为你缺了这套诊断框架
  • 开发者副业指南:如何把技术积累变成被动收入
  • 视频配乐生成技术:语义、时间与节奏的三重对齐
  • 2026年西北地区保温板材生产厂家实用选购参考指南 - 品牌优推
  • AI写作开头钩子设计:5类高转化钩子模板+实测CTR提升217%的数据验证
  • 2026年钢筋卡扣直销厂商哪家靠谱 工程建材采购指南 - 品牌优推
  • 智谱AI大模型技术解析与行业实践指南
  • 基于Baselines3的图像输入强化学习实战指南
  • 别等立案才着急!经济犯罪藏在生意往来里,越早介入越容易争取有利结果
  • TI KeyStone II EDMA3与PCIe吞吐量优化:从理论到工程实践
  • 中秘经贸往来现状与双边贸易整体情况介绍
  • Go-Zero项目开发12: 用户与社交服务部署及微服务治理总结
  • 元宝金条机器定制厂家厂家电话及定制服务全指南 - 品牌优推
  • 东莞亨得利售后保养服务指南权威公示(2026年7月最新) - 亨得利官方博客
  • AI云原生实战06-三甲医院AI诊断怎么跑在云上?阿里云ACK医疗AI实战全解