『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. 【Leetcode】【Medium】Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  2. l2tp over ipsec

    搭建教程: 转自: https://segmentfault.com/a/1190000006125737 http://www.wangyuxiong.com/blog/ti-yan-qiang-w ...

  3. 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u

      $ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...

  4. July 25th 2017 Week 30th Tuesday

    Everything is always more beautiful reflected in your eyes. 一切事物映在你的眼里都会变得更美. Looking in your eyes, ...

  5. 三、基于任务的异步模式(TAP),推荐使用

    一.引言 在上两个专题中我为大家介绍.NET 1.0中的APM和.NET 2.0中的EAP,在使用前面两种模式进行异步编程的时候,大家多多少少肯定会感觉到实现起来比较麻烦, 首先我个人觉得,当使用AP ...

  6. UVa 1349 - Optimal Bus Route Design(二分图最佳完美匹配)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. [转]JOGL安装

    本章介绍了设置环境以使用JOGL使用不同的集成开发环境(IDE),在您的系统上. 安装JOGL 对于JOGL安装,需要有以下系统要求: 系统要求 第一个要求是要在机器上安装Java Developme ...

  8. java.sql.date和java.util.date的区别和转换

    不同点:java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分java.util.Date 是 java.sql. ...

  9. Before start of result set

    ResultSet:在处理结果集的时候出现了问题. 解决办法:while(rs.next())

  10. 数据库——MySQL——索引——索引原理及B+树

    索引原理 我们使用索引,就是为了提高查询的效率,如同查书一样,先找到章,再找到章中对于的小节,再找到具体的页码,再到我们需要的内容. 事实上索引的本质就是不断缩小获取数据的筛选范围,找出我们想要的结果 ...