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

news2024/11/18 13:46:54

👏作者简介:大家好,我是爱敲代码的小王,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 in
zip(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 turtle
p = 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 turtle
width = 30
num = 18
x1 = [(-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的棋盘:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/799851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

239.滑动窗口最大值

leetcode原题链接 题目描述&#xff1a; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例1: 输入&#xff1a;nums [1,…

【UniApp开发小程序】悬浮按钮+出售闲置商品+商品分类选择【基于若依管理系统开发】

文章目录 界面效果界面实现悬浮按钮实现商品分类选择界面使元素均匀分布 闲置商品描述信息填写界面价格校验 界面效果 【悬浮按钮】 【闲置商品描述信息填写界面】 【商品分类选择界面】 【分类选择完成】 界面实现 悬浮按钮实现 悬浮按钮漂浮于页面之上&#xff0c;等页面…

使用langchain与你自己的数据对话(三):检索(Retrieval)

之前我已经完成了使用langchain与你自己的数据对话的前两篇博客&#xff0c;还没有阅读这两篇博客的朋友可以先阅读一下&#xff1a; 使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割使用langchain与你自己的数据对话(二)&#xff1a;向量存储与嵌入 今天我们…

【C语言】文件操作(二)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3; 目录 &#x1f4cc;补充1.sprintf2.…

hive 全量表、增量表、快照表、切片表和拉链表

全量表&#xff1a;记录每天的所有的最新状态的数据&#xff0c;增量表&#xff1a;记录每天的新增数据&#xff0c;增量数据是上次导出之后的新数据。快照表&#xff1a;按日分区&#xff0c;记录截止数据日期的全量数据切片表&#xff1a;切片表根据基础表&#xff0c;往往只…

如何利用tf.keras 实现深度学习?

tf.keras是TensorFlow 2.0的高阶API接口&#xff0c;为TensorFlow的代码提供了新的风格和设计模式&#xff0c;大大提升了TF代码的简洁性和复用性&#xff0c;官方也推荐使用tf.keras来进行模型设计和开发。 常用模块 tf.keras中常用模块如下表所示&#xff1a; 常用方法 深度…

智慧环保:创造绿色未来

随着全球环境问题的日益严重&#xff0c;智慧环保成为推动绿色发展的关键。智慧环保利用先进的技术手段和智能化设备&#xff0c;致力于解决环境问题&#xff0c;保护生态环境&#xff0c;实现可持续发展。它融合了物联网、人工智能、大数据等技术&#xff0c;将科技的力量与环…

C#实现计算题验证码

开发环境&#xff1a;C#&#xff0c;VS2019&#xff0c;.NET Core 3.1&#xff0c;ASP.NET Core API 1、建立一个验证码控制器 新建两个方法Create和Check&#xff0c;Create用于创建验证码&#xff0c;Check用于验证它是否有效。 声明一个静态类变量存放列表&#xff0c;列…

公众号运营:公众号互选广告操作流程指南

什么是公众号互选广告平台&#xff1f; 公众号互选平台&#xff0c;是广告主和流量主双向互选、自由达成内容合作的交易 平台&#xff0c;广告创意呈现在公众号文章内容中。 收入模式&#xff1a;按合作文章收费&#xff0c;合作价格由流量主自主决定。 操作配合&#xff1a;提…

1334179-85-9,BTTAA,是各种化学生物学实验中生物偶联所需

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ BTTAA试剂 | 基础知识概述&#xff08;部分&#xff09;: 中文名称&#xff1a;2-[4-({双[(1-叔丁基-1H-1,2,3-三唑-4-基)甲基]氨基}甲基)-1H-1,2,3-三唑-1-基]乙酸 英文名称&#xff1a;BTTAA CAS号&#xff1a;1334179-8…

Vue2 第一节 通用概念和前置知识

本篇将记录自己学习Vue的知识点总结 学习资源&#xff1a; B站 &#xff1a;尚硅谷Vue2.0Vue3.0全套教程 有个博主将这个视频总结成了笔记&#xff0c;之后的博客也会参考这个笔记 (126条消息) 【2022.3】尚硅谷Vue.js从入门到精通基础笔记&#xff08;理论实操知识点速查&…

Android 之 Paint API —— PathEffect (路径效果)

本节引言&#xff1a; 本节继续来学习Paint的API——PathEffect(路径效果)&#xff0c;我们把画笔的sytle设置为Stroke&#xff0c;可以 绘制一个个由线构成的图形&#xff0c;而这些线偶尔会显得单调是吧&#xff0c;比如你想把这些先改成虚线&#xff0c;又 或者想让路径的转…

我们聊聊性能测试的理解误区

有同学私信我&#xff0c;和他聊了聊关于性能测试的一些话题&#xff0c;发现他对性能测试的理解走入了一些误区。 在一些技术交流群&#xff0c;同样遇到过很多同学由于对性能测试理解上的误区导致的各种问题&#xff0c;比如&#xff1a; 注册用户数并发数&#xff0c;然后服…

Top命令

Top top - 12:46:01 up 2 days, 11:10, 3 users, load average: 0.56, 0.59, 0.45系统基本信息&#xff1a;显示了系统运行时间、登录用户数和平均负载&#xff08;load average&#xff09;情况。平均负载是系统在特定时间范围内的平均活跃进程数&#xff0c;可以用来衡量系…

自动驾驶之轨迹规划8——Apollo参考线和轨迹

1. abstract 本文主要讲解routing和planning模块中的reference line&#xff0c;我之前一直搞不明白这个reference line是如何生成的&#xff0c;有什么作用&#xff0c;和routing以及planning的关系。现在有了一些心得打算梳理一下&#xff1a; 决策规划模块负责生成车辆的行…

Go基础—反射,性能和灵活性的双刃剑

Go基础—反射&#xff0c;性能和灵活性的双刃剑 1 简介2 结构体成员赋值对比3 结构体成员搜索并赋值对比4 调用函数对比5 基准测试结果对比 1 简介 现在的一些流行设计思想需要建立在反射基础上&#xff0c;如控制反转&#xff08;Inversion Of Control&#xff0c;IOC&#x…

7.27 Qt

制作简易小闹钟 Timer.pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # dep…

替换字母题解

样例输入1&#xff1a; 5 4 abcab样例输出1&#xff1a; 1样例输入2&#xff1a; 5 3 abcab样例输出2&#xff1a; 2思路分析&#xff1a; 看到这种题&#xff0c;先想到 O ( 26 n ) O(26\times n) O(26n)的时间复杂度&#xff0c;枚举把字符串都变成每一个字母所需要的最…

ubuntu20.04 安装 docker engine

打开docker官网 点击上图中间的Linux&#xff0c;会是这样&#xff1a; 点击上图的左边栏的 Docker Engine,点击install, 点击 Ubuntu&#xff0c;会是这样&#xff1a; 把页面翻下来&#xff0c;先按照 Insstallation methods 中的 set up thre repository&#xff0c;执行这些…

平安私人银行受邀慈善服务高质量发展会议,分享慈善规划服务

近日&#xff0c;中华慈善总会家风传承与慈善信托委员会成立仪式&#xff0c;以及由中华慈善总会、中国银行业协会联合发起的“慈善顾问赋能计划”启动仪式在北京举行。平安私人银行受邀参会并分享慈善规划服务&#xff0c;平安私人银行慈善业务总监王英及平安私人银行客户、“…