Python的列表解析 (list comprehensions)是在Python 2.0以来一直都有的功能,特别简洁、实用。而字典解析虽然曾经在Python 2.3版本中引入过,但后来因为与dict构造器功能相近而被取消,在Python 2.7和3.0之后才再次加入,体验了下,确实也比较方便。演示如下:

列表解析numL = [-2, -1, 0, 1, 2]

# for循环遍历列表,并做平方运算

num_squareL = []

for i in numL:

num_squareL.append(i**2)

num_squareL

# [4, 1, 0, 1, 4]

# 使用列表解析一句话的事,变化了下写作顺序,从for读起,第一个空格前为返回值

num_squareL = [i**2 for i in numL]

num_squareL

# [4, 1, 0, 1, 4]

# 加一个If判断

# 获取奇数

# %取余数,脱离小学这么久,不写程序的人一般要反应下啥是取余数

odd_num_squareL = [i**2 for i in numL if i%2]

odd_num_squareL

# [1, 1]

# 加一个If判断

# 获取奇数

[i**2 for i in numL if i%2==1]

# [1, 1]

# 加一个If判断

# 获取偶数

[i**2 for i in numL if i%2==0]

# [4, 0, 4]

上一步的输出结果竟然是404,访问网站时最不喜欢见到的标识!(想起来有一次去一位老师的办公室拜访,结果门牌号是404,跟我们网站开发工程师对视一笑,”这个老师要找不到了~~”。好在网站开发工程师经验丰富,开发的网站不会有404,后来也确实合作发表了数据库的Nucleic Acids Research文章。)

集合解析

把列表解析的[替换为{即可,集合自带去重 (chong不是zhong)属性。numS = set(numL)

numS

# {-2, -1, 0, 1, 2}

num_squareS = {i**2 for i in numS}

# 少了一部分

num_squareS

# {0, 1, 4}

字典解析

把列表解析的[替换为{,返回值是key:value形式。字典的key需唯一。

没有字典解析时,生成一个字典可以是下面这样写法:[(i,i**2) for i in numL]

# [(-2, 4), (-1, 1), (0, 0), (1, 1), (2, 4)]

numDict = dict([(i,i**2) for i in numL])

numDict

# {-2: 4, -1: 1, 0: 0, 1: 1, 2: 4}

有了字典解析后,一个{替换了构造函数dict和列表解析[。numDict = {i:i**2 for i in numL}

numDict

# {-2: 4, -1: 1, 0: 0, 1: 1, 2: 4}

numDict = {i:i**2 for i in numL if i>=0}

numDict

# {0: 0, 1: 1, 2: 4}

numDict = {i**2:i for i in numL}

# 重复key的覆盖

numDict

# {4: 2, 1: 1, 0: 0}

移除一部分Key (不过怎么看着都别扭,可能之前没用过,也可能可读性确实不好,倒是可以少写if判断了,直接从key里面扣除了)numDict = {i:i**2 for i in numDict.keys() - [1,2]}

# numDict = {i:i**2 for i in (numDict.keys() - [1,2])}

numDict

# {0: 0, 4: 16}

转载本文请联系原作者获取授权,同时请注明本文来自陈同科学网博客。

链接地址:http://blog.sciencenet.cn/blog-118204-1226041.html

上一篇:Bioconda软件安装神器:多版本并存、环境复制、环境导出

下一篇:软件安装不上,可能是网速慢!Conda/R/pip/brew等国内镜像大全拿走不谢~~

python语法糖的本质_科学网—Python语法糖之:列表解析、集合解析和字典解析 - 陈同的博文...相关推荐

  1. python做社会网络分析系统_科学网—python 社会网络分析工具之igraph - 郗强的博文...

    1.networkx 2.igraph 3.SNAP 2.igraph igraph是免费的复杂网络(graphs)处理包,可以处理百万级节点的网络(取决于机器内存).igraph提供了R和C语言程序 ...

  2. python shell背景颜色改变_科学网—Python Shell Background Color - 李旭的博文

    ArcGIS在安装时就已经默认在本机安装了Python.可是,Python Shell的界面看起来太亮了,对眼睛不太好啊,如图1. 图1 在网上搜索一番,之前也有和我同样问题的帖子,不过,时间有点久了 ...

  3. python爬pdf的曲线_科学网—Python爬PDF - 胡鹏程的博文

    最近用Python爬了两本书,分享下代码,仅作为交流和分享. #下载# import requests #先导入库 import re #正则表达式 import os #创建路径 import ra ...

  4. python写一个笔记软件_科学网—python学习笔记(1)——创建应用 - 高雪峰的博文...

    创建应用的步骤打开命令行 进入manage.py的同级目录 命令行输入:python manage.py startapp blog 添加应用名到sittings.py中的Installed_apps ...

  5. python可视化水平双向箭头_科学网—Python matplotlib quiver—画箭头、风场、量场图 - 张伟的博文...

    用像素点坐标画图 箭头关键的一个参数是长度,长度可以通过参数scale来设置,如果你多次使用quiver(),只要保证参数scale一致,那么箭头长度就会与风速 的值成正比,可按照下面我贴出的代码那样 ...

  6. python perl 比较生信_科学网—生信人写程序1. Perl语言模板及配置 - 刘永鑫的博文...

    科学网对Markdown排版支持较差,对格式不满意的用户请跳转至 CSDN 或微信阅读: 如果感觉文章对您有帮助,想继续阅读同类文章,请扫描下方二维码关注"生信宝典"公众号,每天接 ...

  7. python提取关键字所在句子_科学网-Python提取句子-吕波的博文

    将一段话中的句子分离出来不是一件容易的事.因为句子的开头和结尾并不是很规则,而且句子内部会出现句号.这使得通过单一的正则表达式分离句子是不可能的.有时你能成功,但大多数时候你会出错.这里我们用nltk ...

  8. python服务器怎么获取时间_科学网—python 笔记及示例(三)从时间服务器读取时间 - 钱磊的博文...

    时间同步是一个观测站必须考虑的问题.实际的时间同步可以通过GPS进行,不过考虑一下用时间服务器同步也是很有意思的. 附件中的例子最初是 Paul Rubin写的(http://www.nightson ...

  9. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

最新文章

  1. pkill 和 pgrep总结
  2. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )
  3. SpringBoot中将thymeleaf升级到3.0或以上版本
  4. C++Bubble sort冒泡排序的实现算法(附完整源码)
  5. 使用CXF 2.7.5出现的java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误解决...
  6. 20220211-CTF CRYPTO-base64-凯撒密码-摩丝密码--非常简单的三道题
  7. java环境变量配置 - win10
  8. Oracle--plsql之控制结构
  9. Android中的NavigationView
  10. 修改堆内存_浅谈程序的内存布局
  11. html 两个表合并,SQL中将两个表合并成一个新表
  12. Gantt - attachEvent所有事件(归类、索引)
  13. logstash全量导入es
  14. 在线教育项目-npm install失败-下载依赖失败-(vue-admin-template-master)
  15. Navicat 连接超时问题
  16. 【计算机网络】数据链路层 : 以太网 ( 无连接、不可靠服务 | 以太网发展 | 10BASE-T 以太网 | MAC 地址 | 以太网 MAC 帧 | 高速以太网 )
  17. 癌症有哪些数据集_癌症
  18. 弘辽科技:淘宝宝贝访问量低该如何解决?影响访问量低的原因有?
  19. Golang 云盘服务 (增加私有云分布式存储)
  20. kvm调整配置cpu、内存

热门文章

  1. 深入理解java虚拟机脑图文档
  2. 上海爱立信实习笔试面试
  3. 度数换算_度数的换算
  4. 麦克斯韦方程组的组成由来、媒介的电磁性质和边界条件
  5. 应用“真心话大冒险”已更新到marketplace中
  6. 他一跳槽就裁员4.5万,却让快倒闭的IBM涅槃重生
  7. 3d打印驱动开启uart有什么用TMC2208如何在Ramps1.4开启uart
  8. Cortex-M系列:错误异常
  9. 高职高考数学可以用计算机吗,什么学习水平高职高考数学可以答满分
  10. 临河三中宏志班2021年高考成绩查询,临河三中名教师简介一