『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

# 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

目录:

  1. 列表(list)推导式
  2. 字典(dict)推导式
  3. 集合(set)推导式

1.列表推导式

1.1、使用[]生成list

基本格式:

variable = [out_exp_res for out_exp in input_list if out_exp == 2]out_exp_res:  #列表生成元素表达式,可以是有返回值的函数。for out_exp in input_list:  #迭代input_list将out_exp传入out_exp_res表达式中。if out_exp == 2:  #根据条件过滤哪些值可以。

示例一:

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)

运行结果: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

示例二:

def squared(x):return x*x
multiples = [squared(i) for i in range(30) if i % 3 is 0]
print multiples

运行结果: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

1.2、 使用()生成generator

将俩表推导式的[]改成()即可得到生成器:

multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))

运行结果:<type 'generator'>

2. 字典推导式

字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。

示例一: 大小写key合并:

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)for k in mcase.keys()if k.lower() in ['a','b']
}
print mcase_frequency

运行结果:{'a': 17, 'b': 34}

示例二: 快速更换key和value:

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency

运行结果:{10: 'a', 34: 'b'}

3. 集合推导式

它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

squared = {x**2 for x in [1, 1, 2]}
print(squared)

运行结果: Output: set([1, 4])

这篇笔记来自: cnblog


Thanks Reading ! ♪(・ω・)ノ

转载于:https://www.cnblogs.com/gybb/p/9792657.html

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

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

相关文章

海思芯片选型表汇总

海思芯片选型表汇总_「违规用户」的博客-CSDN博客_海思芯片型号大全

Docker中未指定挂载点容器间volume卷的数据共享

一 背景 在实际使用过程中&#xff0c;我们可能会经常遇到容器间数据共享的情况&#xff0c;怎么处理呢&#xff1f;通过 docker 命令中的一些选项&#xff0c;我们即可完成容器间的数据共享。 二 实验步骤 2.1 创建容器 容器一&#xff1a;gysl-1 [rootdev ~]# docker run -it…

为什么早上和傍晚的太阳总是红色,而中午的大阳却是黄白色?

由太阳光本质决定&#xff0c;但会受环境影响。在地球上和火星上看到的太阳光也是有区别的&#xff0c;和太气层物质及厚薄也有关系。太阳光是由赤橙黄绿青蓝紫七色光组成的复合光是白色光。 在日出和日落的时候&#xff0c;地平线上所透过的大气层厚度&#xff0c;一般要比白…

js把日期字符串转换成时间戳

//获取当前时间&#xff1a; var myDate new Date();//当前时间 var year myDate.getFullYear();//当前年份 var month myDate.getMonth() 1;//当前月份 var day myDate.getDate();//当前日 myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); …

VS2008中开发智能设备程序的一些总结

原文链接&#xff1a;http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四个部分&#xff1a; 系统配置这个部分用来配置系统中的相关参数&#xff0c;参数包括数据库信息和串口的配置信息。这部分的主要技术是XML文件的读取和写入。 数据下载从数据库中下载…

go语言值得学习的开源项目推荐

谷歌官方维护了一个基于go语言的开源项目列表&#xff1a; https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习&#xff0c;有几百行代码适合新手阅读的项目&#xff0c;也有大型如nsq、docker等的项目。 下面推荐几款适合学习的项目&#xff1a; 1、…

部分Nand flash uboot 命令详解

nand info & nand device显示flash的信息&#xff1a; DM365 :>nand info Device 0: NAND 32MiB 3,3V 8-bit, sector size 16 KiB DM365 :>nand device Device 0: NAND 32MiB 3,3V 8-bitnand read(.oob) addr off size 不管是读取data, 使用nand read&#xff0c;还是…

java7

第八章 数组 1.数组的声明定义 数据类型[]变量名 new 数据类型[长度]; 列&#xff1a;int[]ary new int[5]; 2.取值&#xff0c;赋值 取值&#xff1a;数据名[下标]; 列&#xff1a;int a ary[1]; 赋值&#xff1a;变量数据名[…

BZOJ 3564 信号增幅仪

题目链接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3564 题意&#xff1a;给出平面上n个点&#xff0c;画出一个椭圆&#xff0c;椭圆的长轴是短轴的p倍&#xff0c;且长轴的方向为x轴逆时针旋转a度。求这个椭圆短轴的最小值使得可以覆盖所以点。 思路&…

CentOS 7 搭建JAVA环境

安装环境&#xff1a; LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core 开始 运行java -version 检查系统是否安装JRE 或JDK&#xff0c;有则卸载系统自带JAVA包输…

串口波形分析

UART口发出数据按字节发送&#xff0c;发送数据8bit&#xff0c;实际量出波形为10bit&#xff0c;软件底层驱动会自动加上起始位和停止位各1bit&#xff0c;起始位为0&#xff0c;停止位为1。下图为用串口工具发送的数据和用示波器所量波形。 发送数据&#xff1a;0x34 0x43 示…

SpringBoot之MongoTemplate的查询可以怎么耍

学习一个新的数据库&#xff0c;一般怎么下手呢&#xff1f;基本的CURD没跑了&#xff0c;当可以熟练的增、删、改、查一个数据库时&#xff0c;可以说对这个数据库算是入门了&#xff0c;如果需要更进一步的话&#xff0c;就需要了解下数据库的特性&#xff0c;比如索引、事物…

这可能是我见过最详细的快速排序!

关于快速排序&#xff0c;网上&#xff0c;和维基都有完成的解释&#xff0c;他们都是。。。。。。&#xff0c;俺觉得都是&#xff0c;太过于总结话语在概述一些东西&#xff1b; 而我却从最本质的东西&#xff0c;一步一步的深入&#xff1b;在深入的学习过程中&#xff0c;我…

LINQ to SQL 实现 GROUP BY、聚合、ORDER BY

前言 本示例主要实现 LINQ 查询&#xff0c;先分组&#xff0c;再聚合&#xff0c;最后在排序。示例很简单&#xff0c;但是使用 LINQ 却生成了不同的 SQL 实现。 1) 采用手动编写 SQL 实现 SELECT ROW_NUMBER() OVER(ORDER BY T.RealTotal DESC) AS SN, * FROM ( SELECT (S…

Mysql之事务

什么是事务 假如你下了一笔订单&#xff0c;会有以下数据库操作&#xff1a; 1. 生成一笔订单记录 2. 减少库存 3. 从你的账户中减少金额 4. 生成支付记录 这边的四个操作缺一不可&#xff0c;一旦某一个操作出现异常&#xff0c;则全部操作都需要全部回滚。而事务的作…

JVM垃圾回收机制总结

对于垃圾回收机制我先抛出三个问题&#xff1a; ①哪些内存需要回收&#xff1f; ②什么时候回收&#xff1f; ③如何回收&#xff1f; 下面我们主要针对这三个问题来研究JVM GC 一、哪些内存需要回收&#xff1f; 1.JAVA使用可达性分析法来判断对象是否需要回收。 这个算法的基…

虚拟机增加内存方法

楼主由于要在虚拟机里面装一个oracle&#xff0c;在安装过程中&#xff0c;提示物理内存不符合最低标准&#xff0c;如图1. 图1 因为懒得新建一个虚拟机了&#xff0c;所以考虑给虚拟机新增磁盘空间。 首先说明&#xff0c;新增磁盘空间&#xff0c;必须保证当前虚拟机里每个新…

myBatis xml if、where、if-else?、foreach 心得

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验&#xff0c;你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这…

bzoj千题计划213:bzoj2660: [Beijing wc2012]最多的方案

http://www.lydsy.com/JudgeOnline/problem.php?id2660 很容易想到是先把n表示成最大的两个斐波那契数相加&#xff0c;然后再拆分这两个斐波那契数 把数表示成斐波那契进制的形式&#xff0c;第i位表示有没有第i个斐波那契数 比如16133 001001 那么拆分一个数就是把一个1…

面对对象-封装

private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 那么什么情况该用什么修饰符呢&#xff1f;从作用域来看&#xff0c;public能够适用所有的情况。 但是大家在工作的时候&#xff0c;又不会真正全部都适用public,那么到底什么情况改用什么修饰…