当前位置:首页 >> 编程语言 >> 【Python入门【推导式创建序列、字典推导式、集合推导式】(九),联想 p80

【Python入门【推导式创建序列、字典推导式、集合推导式】(九),联想 p80

0evadmin 编程语言 1
文件名:【Python入门【推导式创建序列、字典推导式、集合推导式】(九),联想 p80 【Python入门【推导式创建序列、字典推导式、集合推导式】(九)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人

🔥🔥🔥 python入门到实战专栏:从入门到实战 🔥🔥🔥 Python爬虫开发专栏:从入门到实战 🔥🔥🔥 Python办公自动化专栏:从入门到实战 🔥🔥🔥 Python数据分析专栏:从入门到实战 🔥🔥🔥 Python前后端开发专栏:从入门到实战   

目录

推导式创建序列

字典推导式

集合推导式


推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。

❤️推导式是典型的Python风格,会使用它,代表你已经超过 Python初学者的水平。 

列表推导式 

列表推导式生成列表对象,语法如下:

[表达式 for item in 可迭代对象 ] 或者:{表达式 for item in 可迭代对象 if 条件判断} [x for x in range(1,5)] #[1, 2, 3, 4][x*2 for x in range(1,5)] #[2, 4, 6, 8][x*2 for x in range(1,20) if x%5==0 ] #[10,20, 30][a for a in "abcdefg"] #['a', 'b', 'c','d', 'e', 'f', 'g']#可以使用两个循环,使用zip并行迭代cells = [(row,col) for row,col inzip(range(1,10),range(101,110))]print(cells) a = [x for x in range(1,10) if x%2==0]print(a)#不适用推导式,生成列表。二者对比。体现推导式的优势b = []for x in range(1,10):if x%2==0:b.append(x)print(b) 字典推导式

字典的推导式生成字典对象,格式如下:

{key_expression: value_expression for 表达式 in 可迭代对象}

类似于列表推导式,字典推导也可以增加if条件判断、多个for循环。

values = ["北京","上海","深圳","广州"]cities = {id*100:city for id,city in zip(range(1,5),values)}print(cities)

 生成字典对象:

{100: '北京', 200: '上海', 300: '深圳', 400:'广州'}

统计文本中字符出现的次数:

my_text = ' i love you, i love sxt, i love tong'char_count = {c:my_text.count(c) for c in my_text}print(char_count)

结果输出:

{' ': 9, 'i': 4, 'l': 3, 'o': 5, 'v': 3, 'e':3, 'y': 1, 'u': 1, ',': 2, 's': 1, 'x': 1,'t': 1, 'g': 1, 'a': 1, 'q': 1} 集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:

{表达式 for item in 可迭代对象 } 或者:{表达式 for item in 可迭代对象 if 条件判断}

>>> {x for x in range(1,100) if x%9==0} {99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}

生成器推导式(不直接生成元组) 

很多同学可能会问:“都有推导式,元组有没有?”,能不能用小括号呢?

>>> (x for x in range(1,100) if x%9==0)<generator object <genexpr> at 0x0000000002BD3048>

我们发现提示的是“一个生成器对象”。显然,元组是没有推导式的。

一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代 发现数据已经没有了。

gnt = (x for x in range(1,100) if x%9==0)for x in gnt:print(x,end=' ')for x in gnt:print(x,end=' ')

 实时效果反馈

1. 如下列表推导式的代码,输出的是:

[x*2 for x in range(1,20) if x%5==0 ]

A [5,10,15,20,25]

B [5,10,15, 20, 25,30]

C [1, 2, 3]

D [10, 20, 30]

2. 如下是字典推导式代码,输出的是:

values = ["北京","上海","深圳","广州"]cities = {id*100:city for id,city in zip(range(1,5),values)}print(cities)

A {'北京':1, '上海':2, '深圳':3, '广州':4}

B {'北京':100, '上海':200, '深圳':300, '广州':400}

C {100: '北京', 200: '上海', 300: '深圳', 400: '广州'}

D {1: '北京', 2: '上海', 3: '深圳', 4: '广州'}

综合练习 

1 、【操作】绘制多个同心圆

import turtlep = turtle.Pen() #画笔对象radius = [x*10 for x in range(1,11)] #10,20,30,40...my_colors = ("red","green","yellow","black")p.width(4)for r,i in zip(radius,range(len(radius))):p.penup()p.goto(0,-r)p.pendown()p.color(my_colors[i%len(my_colors)])p.circle(r)turtle.done() #程序执行完毕,窗口在

2 、【操作】绘制18*18棋盘

#画棋盘import turtlewidth = 30num = 18x1 = [(-400,400),(-400+width*num,400)]y1 = [(-400,400),(-400,400-width*num)]t = turtle.Pen()t.speed(10)# t.goto(x1[0][0],x1[0][1])# t.goto(x1[1][0],x1[1][1])for i in range(num+1):t.penup()t.goto(x1[0][0],x1[0][1]-30*i)t.pendown()t.goto(x1[1][0],x1[1][1]-30*i)for i in range(num+1):t.penup()t.goto(y1[0][0]+30*i,y1[0][1])t.pendown()t.goto(y1[1][0]+30*i,y1[1][1])t.hideturtle() #隐藏画笔turtle.done() #保证运行窗口不被自动关闭

实操作业

1 输入一个学生的成绩,将其转化成简单描述:不及格(小于60)、 及格(60-79)、良好(80-89)、优秀(90-100)

2 已知点的坐标(x,y),判断其所在的象限

3 输入一个分数。分数在0-100之间。90以上是A,80以上是B,70 以上是C,60以上是D。60以下是E

4 利用while循环,计算1-100之间数字的累加和;计算1-100之间 偶数的累加和,计算1-100之间奇数的累加和

5 利用for循环,计算1-100之间数字的累加和;计算1-100之间偶 数的累加和,计算1-100之间奇数的累加和

6 打印如下图案:

7、利用嵌套循环打印九九乘法表 

8 用列表和字典存储下表信息,并打印出表中工资高于15000的数据

9、要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录 入员工的数量和薪资明细,以及平均薪资

10 员工一共4人。录入这4位员工的薪资。全部录入后,打印提示 “您已经全部录入4名员工的薪资”。最后,打印输出录入的薪资和平均薪资 

 11 使用海龟绘图,绘制同心圆:

12 使用海龟绘图,绘制18*18的棋盘:

 

 

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接