Python列表推导式、字典推导式与集合推导式用法实例分析


Posted in Python onFebruary 07, 2018

本文实例讲述了Python列表推导式、字典推导式与集合推导式用法。分享给大家供大家参考,具体如下:

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

列表(list)推导式
字典(dict)推导式
集合(set)推导式

一、列表推导式

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)
# Output: [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
# Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

2、使用()生成generator

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

multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))
# Output: <type 'generator'>

二、字典推导式

字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

例子一:大小写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
# Output: {'a': 17, 'b': 34}

例子二:快速更换key和value

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

三、集合推导式

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

例一:

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Django Highcharts制作图表
Aug 27 Python
python分析作业提交情况
Nov 22 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
基于MTCNN/TensorFlow实现人脸检测
May 24 Python
儿童学习python的一些小技巧
May 27 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
python各层级目录下import方法代码实例
Jan 20 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
浅析Python3爬虫登录模拟
Feb 07 #Python
Python实现的三层BP神经网络算法示例
Feb 07 #Python
Python 12306抢火车票脚本
Feb 07 #Python
django限制匿名用户访问及重定向的方法实例
Feb 07 #Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 #Python
Python实现的径向基(RBF)神经网络示例
Feb 06 #Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 #Python
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
php执行sql语句的写法
2009/03/10 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python使用socket进行简单网络连接的方法
2015/04/29 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
怎样声明子类
2013/07/02 面试题
协议书与合同的区别
2014/04/18 职场文书
外贸业务员求职信
2014/06/16 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
安全第一课观后感
2015/06/18 职场文书