python 中关于推导式生成器的一些总结

2023-11-16

推导式:
可以理解为是数据生成方式或者是处理方式
类型:列表,元组,字符串,字典,集合
外部包装的括号决定了返回值类型的 定义

列表推导式

[表达式 for循环 if语句]

1)对列表中的每项元素进行立方运算(变换功能)

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a]
print(a) 
print(b)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

还可以筛选出自己想要,比如只要3以及3的倍数进行立方运算

b = [x ** 3 for x in a if x % 3 == 0]
print(b)

[27, 216, 729]

2)支持多层for循环
将一个嵌套列表转换成一个一维列表。
我们看到a是一个嵌套列表,如果按照我们普通的做法的话,就需要先定义一个空列表c

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
c=[]
for i in a:
    for j in i:
        c.append(j)
print(c)
#一共需要五行代码,而如果用列表推导式的话就只需要两行代码
b = [j for i in a for j in i]
print(b)

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

字典推导式

{表达式(key:value) for循环 if语句}

题目1:
现在要做一个字典,key是a>>z,然后值是1>>26,用字典推导式的话就可以很快做出来了

mylist=[chr(var) for var in range(97,123)]
mydict={var:index+1 for index,var in enumerate(mylist)}
print(mydict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 10, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26}

题目2:

data={'id': 1, 'task_id': 'abc', 'weibo': 'true', 'weixin': 'true', 'zhihu': 'true', 'baidu_tieba': 'false', 'baidu_new': 'false', 'toutiao': 'true', 'total_num': 0}
#要求取出:weibo,weixin,zhihu,baidu_tieba,baidu_new,toutiao的键值对存放到一个字典里面,并添加一个字段true_num,值为该字典中true个数。
#我们如果用以前的做法:
k11=('weibo','weixin','zhihu','baidu_tieba','baidu_new','toutiao')
c={}
d=0
for k,v in data.items():
    if k in k11:
        c[k]=v
        if v == 'true':
            d+=1
            c['true_num']=d
print(c)
#结果
{'weibo': 'true', 'true_num': 4, 'weixin': 'true', 'zhihu': 'true', 'baidu_tieba': 'false', 'baidu_new': 'false', 'toutiao': 'true'}
#我们尝试使用一下推导式

a = {k:v for k,v in data.items() if k in k11}
dict=dict({'ture_num':len({k:v for k,v in data.items() if k in k11 if v == 'true'})},**(a))
print(dict)
#结果
{'ture_num': 4, 'weibo': 'true', 'weixin': 'true', 'zhihu': 'true', 'baidu_tieba': 'false', 'baidu_new': 'false', 'toutiao': 'true'}

上述两种方法输出的字典有些许不同,我也不知道怎么解释,有大神看到的话可以帮我解释一下吗

生成器的一种创建方式

(表达式 for循环 if语句)——> generator
generator.__next__()函数 
	获取生长器中的数据
	生成器中的数据只有调用,for循坏迭代访问:
		维护了一套算法在生成器中
		使用数据的时候,才会生成一个个的数据
		好处,节省内存
		StopIteration:数据结束异常
		标识一个序列 迭代器 结束,StopIteration
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中关于推导式生成器的一些总结 的相关文章

  • 作业 从外到内:一次完整的渗透测试!作业

    9th 一 环境准备 Windows10 1709地址 WindowsServer2016 x64 修改了密码 原密码 lonelyor org UbuntuServer2004 x64 UbuntuServer1604 x64 pfsen
  • DNS服务器和辅助服务器的搭建

    搭建的环境要求 管理域 joker cn 规划一台主域名服务器 master 另一台辅助域名服务器 slave 主服务器的主机名为 joker cn IP地址为192 168 23 10 辅助域名服务器IP地址为 192 168 23 10
  • 【JavaWeb】练习三

    一 简答题 1 gt 简述servlet的生命周期 第一次访问某个servlet的时候 tomcat容器会创建servlet实例 紧接着会调用init方法进行初始化 然后执行service方法 在父类中的service方法中判断请求是get
  • 第二周作业 暴力破解——1.基于表单的暴力破解 2.验证码绕过(on client) 3.验证码绕过(on server)

    一 先将在课程重演中出现的问题放在最前面 1 在设置完代理后出现了BurpSuite不能拦截localhost 127 0 0 1的情况 最后发现火狐浏览器中有个地方引起的 把其中内容删除掉就能拦截成功了 2 导入字典后无法攻击 在路径上不
  • 用递归求各位数字之和 C++实现

    输入一个数字 求其个十百千万 等各数字之和 要求 编写递归函数 输入 12345 输出 15 适用于初学者理解递归函数 include
  • pikachu之不安全的文件下载概述

    不安全的文件下载概述 文件下载功能在很多web系统上都会出现 一般我们当点击下载链接 便会向后台发送一个下载请求 一般这个请求会包含一个需要下载的文件名称 后台在收到请求后 会开始执行下载代码 将该文件名对应的文件response给浏览器
  • 理解矩阵(一)

    前不久chensh出于不可告人的目的 要充当老师 教别人线性代数 于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次 很明显 chensh觉得 要让自己在讲线性代数的时候不被那位强势的学生认为是神经病 还是比较难的事情 可怜的chens
  • Java赛马程序

    编写一个多线程的控制程序 称为赛马程序 创建分别代表两匹马的两个线程 并将它们设置为高低不同的优先级 并以进度条的形式显示赛马过程 没几天Java要考试了 紧急学习一下再把之前参考 10条消息 Java多线程 进度条实现赛马实验 shall
  • IT项目管理-06

    文章目录 IT项目管理 06 教材练习题6 教材练习题7 收集网上资料 总结看板在软件项目中的使用 参考 IT项目管理 06 教材练习题6 a b 路径1 A gt D gt G gt J gt K 长度 2 4 6 1 2 15 路径2
  • 利用Sql Server代理中的作业实现数据库的自动备份

    1 在Sql server代理中新建作业 2 填写作业名称 3 新建步骤 4 填写步骤名称 选择类型为T Sql脚本 在命令中输入操作脚本 以数据库databaseA 为例 脚本内容如下 DECLARE filename VARCHAR 2
  • windows操作系统蓝屏错误对照表

    windows操作系统蓝屏错误对照表
  • HTB-Tier2- Unified

    HTB Tier2 Unified Tags Web Vulnerability Assessment Databases Injection Custom Applications Outdated Software MongoDB Ja
  • Lloyd-Max条件、DPCM系统最佳预测系数推导以及最小二乘:梯度下降、牛顿法、高斯牛顿法总结

    文章目录 1 Lloyd Max条件推导 2 DPCM系统最佳预测系数推导 3 最小二乘 梯度下降 牛顿法 高斯牛顿法总结 3 1 梯度下降 3 2 牛顿法 3 3 高斯牛顿法 1 Lloyd Max条件推导 2 DPCM系统最佳预测系数推
  • 清华梦的粉碎-写给清华大学的退学申请

    作者 王垠 清华梦的诞生 小时候 妈妈给我一个梦 她指着一个大哥哥的照片对我说 这是爸爸的学生 他考上了清华 大学 他是我们中学的骄傲 长大后 你也要进入清华大学读书 为我们家争光 我不知道清华是什么样子 但是我知道爱迪生和 牛顿 的故事
  • 整型有哪几种形式?各种形式有什么区别?

    整型有哪几种形式 C 中提供的整数类型有三种 int long short 每种类型又分为有符号和无符号两种类型 有符号整数既可以表示非负整数 又可以表示负整数 但是 无符号整数不能表示负数 只能表示非负整数 一 无符号整数 在内存中 in
  • 自己写不出代码我该怎么办

    在作业和练习中 自己写不出代码 这是一个在学习中经常出现的问题 那么该怎么解决这个问题呢 1 先分析实现的思路 拿到作业 按照要实现的功能 先分析去实现的思路 如果完全不知到该怎么去实现 完全是一头雾水 那最好就先看看其他人是如何实现的 或
  • HTML(HBuilder)作业题10- 用户登录(jquery)

    问 简单的用户登录怎么弄 答 1 利用jquery 2 利用if 注释 用鼠标离开区域开始判断 可以自行尝试修改成click单击按钮 HBuilder
  • 小学奥数题使用python解决(使用2倒9中不重复的数使得{}+{}={}{}-{}=1{}满足)

    使用2 9中不重复的数使得 1 满足 样子不太好看 1 利用for循环和if语句 代码 利用2 9不重复的数使得 1 i 0 for a1 in range 2 10 for a2 in range 2 10 if a1 a2 and a1
  • #C++矩阵类的实现

    C 矩阵类的实现 环境 Win10 VS2017 最近老师布置一个简单的C 作业 实现一个矩阵类 并且实现矩阵运算 主要实现运算为矩阵的加 减 乘 除以及求行列式 伴随矩阵 代数余子式和逆矩阵等 在参考网上的一些前辈的代码后 写出了这些运算
  • 【JavaWeb】 练习二

    1 gt 实现登录 如果用户名密码错误 转入到登录页面 提示信息 用户名密码错误 2 gt 如果用户不登录 直接访问展示页面 也需要转入到登录页面 提示信息 请先登录在访问 3 gt 实现退出功能 转到登录页面 4 gt 统计查看展示页面的

随机推荐

  • 云计算的三种模式IaaS/PaaS/SaaS/BaaS对比:SaaS架构设计分析

    SaaS 软件即服务 Software as a Service 的出现改变了传统使用软件转变为使用服务 SaaS与传统软件的最大区别是 前者按年付费租用服务 后者一次买断 这貌似只是 报价方式 的区别 实际上这是一个根本性的变化 这带来的
  • Pygame - 背景图片连续滚动

    方法 让背景图像分别在 0 0 和 0 img heigh 两个位置向下移动它们 当其中一个位于 0 img heigth 位置时 再次将其放置在 0 img heigh 位置 具体代码 import pygame import sys i
  • vue跳转微信小程序遇到的坑

    官方参考https developers weixin qq com doc offiaccount OA Web Apps Wechat Open Tag html 21 vue项目 h5跳转小程序 简书 遇到的问题 在PC端不显示样式
  • 力扣(LeetCode)算法_C++——最大连续 1 的个数 III

    给定一个二进制数组 nums 和一个整数 k 如果可以翻转最多 k 个 0 则返回 数组中连续 1 的最大个数 示例 1 输入 nums 1 1 1 0 0 0 1 1 1 1 0 K 2 输出 6 解释 1 1 1 0 0 1 1 1 1
  • PSA wiring diagram for jumper/relay 2.2hdi

    Anyone has 2007 Citroen Relay 2 2 HDI 88 KW 4HU engine and need an engine and abs wiring diagrams ECU Vistion DCU 102 Ju
  • c#线程三

    1 单元模式和Windows Forms 单元模式线程是一个自动线程安全机制 非常贴近于COM Microsoft的遗留下的组件对象模型 尽管 NET最大地放弃摆脱了遗留下的模型 但很多时候它也会突然出现 这是因为有必要与旧的API 进行通
  • 使用FPGA进行加速运算

    注 本篇文章来源于知乎 为微软亚洲研究院李博杰的回答 详细链接在这儿 点击打开链接 在这篇文章中 作者从CPU GPU FPGA的架构出发 讨论了微软数据中心为什么使用FPGA而不选择GPU 该文章是我逐字搬运过来的 其目的是为后续我们公司
  • XView小程序开源组件库

    XView小程序开源组件库 XView小程序组件库本着简单易用的原则封装组件 使用时只需要在json配置文件中引用即可 使用 组件库当中大致可分为一下三大类 布局组件 基础组件 表单组件 XView小程序组件库本着简单易用的原则封装组件 使
  • UI自动化概念 + Web自动化测试框架介绍

    1 UI自动化测试概念 我们先明确什么是UI UI 即 User Interface简称UI用户界面 是系统和用户之间进行交互和信息交换的媒介 UI自动化测试 Web自动化测试和移动自动化测试都属于UI自动化测试 UI自动化测试就是借助自动
  • tf2使用tensorboard(jupyter notebook)

    环境 tensorflow2 0 jupyter notebook unbuntu18 04 这个应该影响不大 示例 用的是iris数据集分类 该数据集库自带 import tensorflow as tf import numpy as
  • Catalan卡塔兰数

    今天在二叉搜索树 随机组成情况 分析复杂度遇到 catalan数 学习并记录一下 背景 分析二叉搜索树 BST 的平均性能时 我们可以分为随机生成和随机组成分析 随机生成 将各节点按照数的顺序随机排列 若含有n个节点 n个互异关键码 则有n
  • 波士顿动力开源代码_失去动力两年后,我如何开始开源之旅

    波士顿动力开源代码 by Hemakshi Sachdev 通过Hemakshi Sachdev 失去动力两年后 我如何开始开源之旅 How I started my open source journey after being demo
  • 数据结构(一)顺序表、链表以及队列

    一 顺序表 顺序表 它具有连续内存地址 访问方便O 1 但是删除和插入不方便O N 常用数组实现 在JAVA中 声明一个数组直接使用语句 int array new int k k为已知的数组大小 当然JAVA中本身自带了很多封装的数组 如
  • 全国地区代码表

    天津市 地区代码 地区名称 1100 天津市 辽宁省 地区代码 地区名称 2210 沈阳市 2210 法库县 2210 康平县 2210 辽中县 2210 新民市 2220 大连市 2222 普兰店市 2223 庄河市 2224 瓦房店市
  • 晶振电路中为什么用22pf或30pf

    让我们一起来看看到底晶振电路中为什么用22pf或30pf的电容而不用别的了 Y1是晶体 相当于三点式里面的电感 C1和C2就是电容 5404非门和R1实现一个NPN的三极管 接下来分析一下这个电路 5404必需要一个电阻 不然它处于饱和截止
  • js获取元素的距离父元素、窗口的距离offsetTop,offsetHeight,clientHeight

    前言 相信很多项目中都会有这样一个小需求 PC端 移动端则是点击 鼠标移上某个菜单或者某个位置 显示一个弹出框 移开则隐藏弹出框 就是css中hover效果 这种通常做法是每个子菜单下都有一个弹框 父元素相对定位 子元素绝对定位 只需要控制
  • 14、Qt 捕捉鼠标事件

    0 需求 在鼠标进入窗口实时捕捉所在位置 以及进行的操作 1 方法 我们主要使用QWidget中的几个方法 鼠标进入 void enterEvent QEvent event 鼠标离开 void leaveEvent QEvent even
  • 管理一年,领悟一生:迷茫、洞见与成长

    领导力跟你做了多少年管理 管过多少人 没有直接的关系 你开悟了 一年就能管得井井有条 不开悟 十年也是一塌糊涂 1 引言 大家好 我是苍何 相信作为技术人的成长路线大家都有了解吧 大家普遍所了解的就是两个路线 技术管理和架构师 而成为架构师
  • ue4大气纹理

    UE4的大气纹理 在 class FAtmosphereTextures public FRenderResource 成员变量上涉及到了辐射 投射 和散射 分三个部分 首先放入一个commandlist 然后分别就各参数创建RTT 传参数
  • python 中关于推导式生成器的一些总结

    推导式 可以理解为是数据生成方式或者是处理方式 类型 列表 元组 字符串 字典 集合 外部包装的括号决定了返回值类型的 定义 列表推导式 表达式 for循环 if语句 1 对列表中的每项元素进行立方运算 变换功能 a 1 2 3 4 5 6