『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 ! ♪(・ω・)ノ

『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)的更多相关文章

  1. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  2. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

  3. 『Python基础-7』for循环 & while循环

    『Python基础-7』for循环 & while循环 目录: 循环语句 for循环 while循环 循环的控制语句: break,continue,pass for...else 和 whi ...

  4. 『Python基础-6』if语句, if-else语句

    # 『Python基础-6』if语句, if-else语句 目录: 条件测试 if语句 if-else语句 1. 条件测试 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为 ...

  5. 『Python基础-4』字符串

    # 『Python基础-4』字符串 目录 1.什么是字符串 2.修改字符串 2.1 修改字符串大小 2.2 合并(拼接)字符串 2.3 使用乘号'*'来实现字符串的叠加效果. 2.4 在字符串中添加空 ...

  6. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

  7. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  8. 『Python基础-9』元祖 (tuple)

    『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...

  9. 『Python基础-8』列表

    『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

随机推荐

  1. Linux下TC使用说明 & 使用备注 ZZ

    一.TC原理介绍 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制. Linux流量控制的基本原理如 ...

  2. mongodb 3.4 YUM安装

    1:配置yum源vi /etc/yum.repos.d/mongodb-org-3.4.repo加入以下内容: [mongodb-org-3.4] name=MongoDB Repository ba ...

  3. .net 流(Stream) - StreamWriter和StreamReader、BinaryReader和BinaryWriter

    转自:http://www.oseye.net/user/kevin/blog/86 一.StreamWriter和StreamReader 从上一篇博文可知文件流.内存流和网络流操作的都是字节,每次 ...

  4. ZT自贴吧 说说你是怎么和恋人确定恋爱关系的?

    http://www.baidu.com/link?url=svJFMqibXXhJUiGDaDr1obOyrIb9o0TqO5JWFtMuM-l7ndaRlGMyuRQKCOHh-Pj0

  5. Yii日志使用

    Yii 提供了一个灵活可扩展的日志功能.记录的日志 可以通过日志级别和信息分类进行归类.通过使用 级别和分类过滤器,所选的信息还可以进一步路由到 不同的目的地,例如一个文件,Email,浏览器窗口等. ...

  6. 【[AHOI2009]中国象棋】

    计数类dp还是要多写啊 看上去并没有什么思路,加上被题解里状压的标签迷惑了,于是就去看了一眼题解里设计的状态 之后就很好做了 首先先搞明白这道题的本质,就是对于任何一行任何一列炮的个数都不能超过\(2 ...

  7. webpack究竟是什么

    在很久很久以前,当我们写一个web网页的时候,js实现的逻辑相对是比较弱的.但随着前端技术的发展,前端能实现的内容越来越多.在js里面加了非常非常多的逻辑,于是呢,我们就发现我们通过这种面向过程的方式 ...

  8. PHP------知识复习

    PHP概述 (1)PHP(Hypertext  Perprocessor)超级文本预处理器 (2) PHP是一种在服务器端执行的嵌入HTML文档的脚本语言 (3) 是一种网站开发语言(B/S结构) ( ...

  9. Eclipse安装Sonarlint插件

    这里安装的是Sonarlint3.6.插件安装非常简单.插件比Sonar更为简单快捷. 一.首先通过点击Eclipse上方Help菜单会出现一个下拉列表,点击其中的Eclipse MarketPlac ...

  10. spring+jdbc+template+transaction实现

    使用spring和jdbc模板事务实现 1.创建实体类: Role package com.wbg.sjt.entity; public class Role { private int id; pr ...