【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 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.mzph.cn/news/9381.shtml

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

相关文章

SkyWalking链路追踪-技术文档首页

SkyWalking 文档中文版&#xff08;社区提供&#xff09; (skyapm.github.io)https://skyapm.github.io/document-cn-translation-of-skywalking/ SkyWalking-基本概念 SkyWalking链路追踪是一个用于分布式系统的性能监控工具&#xff0c;它帮助开发人员了解系统中各组件之间…

工程安全监测无线振弦采集仪在建筑物的应用分析

工程安全监测无线振弦采集仪在建筑物的应用分析 工程安全监测无线振弦采集仪是一种在建筑物中应用的重要设备。它通过无线采集建筑物内部的振动信息&#xff0c;对建筑物的安全性进行监测和评估&#xff0c;为建筑物的施工和使用提供了可靠的技术支持。本文将详细介绍工程安全…

ElasticSearch基础篇-安装与基本操作

ElasticSearch基础篇 安装 官网 下载地址 下载完成后对文件进行解压&#xff0c;项目结构如下 进入bin目录点击elasticsearch.bat启动服务 9300 端口为 Elasticsearch 集群间组件的通信端口&#xff0c; 9200 端口为浏览器访问的 http协议 RESTful 端口 打开浏览器&#…

力扣热门100题之矩阵置0【中等】

题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff…

C++ - list介绍 和 list的模拟实现

list介绍 list 是一个支持在常数范围内&#xff0c;任意位置进行插入删除的序列式容器&#xff0c;且这个容器可以前后双向迭代。我们可以把 list 理解为 双向循环链表的结构。 于其他结构的容器相比&#xff0c;list在 任意位置进行插入和函数的效率要高很多&#xff1b;而li…

SWF格式视频怎么转换成AVI格式?简单的转换方法分享

当你想要在不同的设备上播放视频时&#xff0c;将SWF格式视频转换成AVI格式是非常有用的。因为SWF格式通常只能在特定的软件或网页上播放&#xff0c;而AVI格式则可以在更广泛的设备上播放&#xff0c;包括智能手机&#xff0c;平板电脑和电视机等。那么我们怎么将SWF转换成AVI…

AI学习笔记四:yolov5训练自己的数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 一般情况下&#xff0c;大部分人的电脑都是没有cpu的&#xff0c;cpu也是可以训练的&#xff0c;但花费的时间太长&#xff0c;实际200张图片&#xff0c;使用CPU训练300轮花了3天&#xff0c;本章记录使用云服务器来训练自…

SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》

首先了解一下单机环境 第一步&#xff0c;搭建一个 Elasticsearch 服务。第二步&#xff0c;下载 SkyWalking 软件包。第三步&#xff0c;搭建一个 SkyWalking OAP 服务。第四步&#xff0c;启动一个 Spring Boot 应用&#xff0c;并配置 SkyWalking Agent。第五步&#xff0c;…

Docker Compose 容器编排

Docker compose Docker compose 实现单机容器集群编排管理&#xff08;使用一个模板文件定义多个应用容器的启动参数和依赖关系&#xff0c;并使用docker compose来根据这个模板文件的配置来启动容器&#xff09; 通俗来说就是把之前的多条docker run启动容器命令 转换为docker…

【小白学编程5】我的房子在哪儿?理解类型和变量

我的房子在哪儿? 理解类型和变量 - 《小白学编程》系列第五讲 - 《小白学编程》系列课程过半&#xff0c;为满足更多同学的时间需求&#xff0c;课程直播时间改为了晚上八点。 昨晚八点准时开始课程的第五讲&#xff0c;其主题为&#xff1a;“我的房子在哪儿&#xff1f;理解…

学习 C语言第二天 :C语言数据类型和变量(下)

目录&#xff1a; 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了&#xff0c;类型是用来创建变量的。 变量是什么呢&#xff1f;在C语言当中不经常变的量称为常量&#xff0c;经常…

【雕爷学编程】Arduino动手做(95)---GY9960手势传感器模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

直播平台源码开发提高直播质量的关键:视频编码和解码技术

在互联网日益发展的今天&#xff0c;直播平台成为人们互联网生活的主力军&#xff0c;直播平台功能的多样化与智能化使我们的生活有了极大地改变&#xff0c;比如短视频功能&#xff0c;它让我们既可以随时随地去发布自己所拍摄到的东西让世界各地的用户看到&#xff0c;也能让…

Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

最近想写写C&#xff0c;装了VisualStudio 2022&#xff0c;折腾半天。对于一个用惯VSCode的人来说&#xff0c;总感觉IDE太笨重。于是自己网上各种查资料&#xff0c;自己琢磨&#xff0c;搭建了一套Windows下基于VSCode和CMake的C轻量级开发环境。 具体搭建步骤 1. 下载并安…

国产数据库-内核特性-gbase8a智能索引

国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库&#xff0c;有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一&#xff0c;包含基于列的统计信息&#xff0c;可以有效过滤数据&#xff0c;大幅降低数据库磁盘IO&#…

数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 算法概述 图示 快速排序和归并排序有一些相似&#xff0c;都是用到了分而治之的思想&#xff1a; 伪代码 通过初步的认识&#xff0c;我们能够知道快速排序算法最好的情况应该是&#xff1a; 每…

TCP协议如何实现可靠传输

TCP最主要的特点 TCP是面向连接的运输层协议&#xff0c;在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此&#xff0c;在IP的数据报服务基础之上&#xff0c;增加了保证可靠性的一系列措施。 TCP最主要的特点&#xff1a; TCP是面向连接的输出层协议 每一条…

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物&#xff0c;从在线银行到在线医疗&#xff0c;Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭…

OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在支持 OpenShift 4.13 的环境中验证 文章目录 技术架构部署 Distributed Tracing 运行环境安装测试应用并进行观测跟踪参考 说明&#xff1a; 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在…

WPF快速开发(2):图标库知识点

文章目录 前言知识点windows资源Style:样式Setter:属性继承关系 Trigger:触发器 WPF层级划分数据绑定声明数据上下文绑定数据模板 前言 图标资源下载 iconfont 知识点 windows资源 Window.Resources&#xff1a;资源位置声明X:Key&#xff1a;资源Id&#xff0c;用于前端的…