练习03_字典集合

发布时间 2023-03-28 09:04:06作者: dogfaraway

本次课主要学习字典、集合这两种数据结构

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