列表元组字典集合

让我们快速回顾已学内容:

  1. 创建并登陆了百度飞桨Paddle&Paddle Baidu AI Studio个人账号,该云计算代码测试与托管平台是免费的,24小时访问的。我们测试了“hello world”,以及分享项目的二维码。
  2. 下载并配置了Anaconda运行环境,运行jupyter notebook并进行了测试。在这个任务中,我们的python环境可以基于本地,而不是依赖互联网或其他服务机构。可以做到自主可控的开发。
  3. python的基本运算,我们可以把它当作科学计算器使用。该过程中,我们知道了赋值命令
  4. 对字符串的操作,我们知道了字符串赋值需要使用一对单引号或双引号,我们使用.split()对字符串进行分割。我们还了解到,python是一种胶水语言,.split()函数也可以叫做“方法”,使代码编更便利。
  5. 缩进是python表达代码执行顺序和层次的重要规则,大多数IDE会识别代码并自动缩进,也可以手动tab键缩进
  6. 三种程序结构:顺序、条件、循环。任何一个任务都可以用这三种结构表示。
  7. 我们用while和for循环练习了从1加到100的求和,这两种循环是常用的,语法上存在差别
  8. 我们用if语句判断某个数是否在一个数列中
  9. 我们练习了def自定义函数,了解了函数中的参数、传入参数、return返回结果
  10. 我们练习了lambda自定义函数,这种写法一旦熟悉后,比def更简洁,更具有自然语言阅读性

列表、元组这两种数据结构

python默认有四种数据结构:

列表 List、

元组 Tuple、

字典 Dict、

集合 Set

统称为容器Container,顾名思义是不同的东西组合而成的,例如数值、字符串。

列表和元组

  1. 标记方式不同,列表以方括号标记,元组以圆括号标记
a = [3,6,8]
b = (2,5,9)
  1. 为了访问列表或元组里的元素,应当利用下标,在变量名后面使用方括号加数字进行索引。请注意,python以及大多数编程语言的索引是从0开始的,这与指针在内存地址中的偏移量计算有关,从0开始更简洁,可阅读该文章https://en.wikipedia.org/wiki/Zero-based_numbering
a = [3,6,8]
a[0]
a[1]
a[2]
a[3]
a[100]
a[0:0]
a[0:1]
a[0:2]

b = (2,5,9,5,7,2)
b[0]
b[2]
b[3]
b[0:1]
b[1:3]
b[1:]
  1. 列表可以包含多种类型的数据
c = [3,"Q"]
  1. 元组也可以
d = ("abc",[1,2,3],a)

列表和元组的区别:列表可以修改,元组不能修改

a = [1,2,3]
a[1] = 9
print(a)

b = (2,4,6)
b[0] = 5
print(b)
  1. 复制一个列表,测试下面两种写法
# 第一种
a = [1,2,3]
b = a

# 第二种
a = [1,2,3]
b = a[:]
  1. 用list函数生成列表
f = list('abcdefg')
f
  1. 用tuple函数生成元组,注意tuple的传入参数是什么数据结构?
#### *****
tuple([1,2,3,4,'a'])
tuple([2,5,1]) #### ****
##### ******
  1. 与列表和元组有关的函数,自行测试以下六个函数(最新版本python去掉了某些函数,感兴趣的同学可自行百度相关替代实现方法)
    |import operator
    operator.eq(a,b)|比较两个列表或元组内部的元素|
    |:----|:----|
    |len(a)|返回元素的数量|
    |max(a)|返回元素的最大值|
    |min(a)|返回元素的最小值|
    |sum(a)|返回元素的求和|
    |sorted(a)|对元素进行排序,
    降序用参数reverse = True|

  2. 我们已经知道,python是胶水语言,通过变量名加后缀形式进行某些操作,列表也有这类“方法”。请自行测试以下“方法”(最新版本python去掉了某些函数,感兴趣的同学可自行百度相关替代实现方法)
    |.append(1)|将1添加到列表末尾|
    |:----|:----|
    |.count(2)|统计2在元素中出现的次数|
    |.extend([3,4])|将列表[3,4]追加到列表的末尾|
    |.index(5)|找出5出现的索引位置|
    |.insert(6,7)|将7插入列表中索引为6的位置|
    |.pop(8)|移除列表中索引为8的元素|

字典

字典,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 , 发送到邮箱,文件命名方式为:列表元组字典集合_班级+学号_姓名.ipynb或.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水木冰河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值