练习03_字典集合
本次课主要学习字典、集合这两种数据结构
python默认有四种数据结构:
列表 List、
元组 Tuple、
字典 Dict、
集合 Set
字典
字典,dictionary,简称dict,由“键”和“值”组成,即Key-Value,也叫键值对,KV。
从数学上理解,字典是一种映射。当你告诉电脑“键”的名称,它会返回给你对应的值。
创建字典的基本方法是:
d = {'today':20} e = {'tomorrow':30} # 也可以同时赋值给一个变量 f = {'today':20,'tomorrow':30}
上面的例子中,today和tomorrow就是键,键应当是唯一的,因为它起到索引的作用。
字典的检索
让我们检索一下键对应的值:
d['today'] e['tomorrow'] f['today']
通过dict()函数创建字典
dict([['today',20],['tomorrow',30]])
集合
集合中的元素是不重复的,无序的,不能索引的。
创建集合的两种方法:{}, set()
s = {1,2,3,3} ## 观察集合s是否自动去重 s = {[1,2,3,4,5]} ## 观察花括号内是什么数据结构
集合的运算
以下代码不是完整的,请自行补充相关变量,使代码可以正确运行:
a = t | s ## t和s的并集 b = t & s ## t和s的交集 c = t - s ## t与s的差集,s的元素不在t中 d = t ^ s ## 对称差集,查找数学解释,体会一下结果
函数式编程
将计算机运算看作一种数学的函数计算,例如之前学过的lambda就是函数式编程的方法之一。
map函数
问题描述:假设列表a = [1,2,3]。列表的每个元素都加3得到一个新列表,
常规的迭代方法或列表解析法:
a_new = [i+3 for i in a]
用map函数
a_new = map(lambda x:x+3, a) ## f(x)=x+3 list(a_new) # 检查运行结果
或者这样理解,我们先用lambda生成一个函数f(x), 然后再用map函数将f(x)应用到列表的每一个元素去计算:
f = lambda x:x+3 a_new = map(f,a) list(a_new)
reduce函数
reduce是递归计算。什么是递归?考虑n的阶乘:123...n。
计算机按自然数的顺序连乘,每乘一个数就需要内存中记录一下,然后乘以下一个自然数。
测试以下阶乘代码,假设我们要做99阶乘,代码如何正确运行?
from functools import reduce ##导入functools库的reduce函数 reduce(lambda x,y: x*y, range(1,n+1))
filter函数
filter是一个过滤器,用于筛选列表中符合条件的元素.
测试并注释以下代码,
b = filter(lambda x:x>5 and x<11, range(17)) list(b)
想一想,range(17)发生了什么?用list查看
list(range(17))
练习完成要求:
测试以上知识点的代码,可将例子中的参数进行替换
每行、每段代码应当给出注释,说明这段代码什么目的,这行代码做了什么,代码注释以#号开始
在本地jupyter notebook完成,或者百度AI Studio完成,二选一
将完成的代码文件.ipynb上传至超星,文件命名方式为:学号_姓名_班级_week04练习.ipynb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?