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}

python反转列表解析_Python语法糖之:列表解析、集合解析和字典解析相关推荐

  1. python 连续比较_python语法糖之连续比较表达式

    关于python的连续比较的语法糖 比如有如下形式: (a < b) and (b < c),这样子看起来不够好看. python中提供了连续比较的语法糖: a < b < c ...

  2. python语法糖是什么_Python语法糖Syntactic Sugar

    语法糖(Syntactic sugar): 计算机语言中特殊的某种语法 这种语法对语言的功能并没有影响 对于程序员有更好的易用性 能够增加程序的可读性 简而言之,语法糖就是程序语言中提供[奇技淫巧]的 ...

  3. python语法糖是什么意思_python语法糖是什么

    语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添 ...

  4. assert函数_悉数Python函数传参的语法糖

    TIOBE排行榜是程序开发语言的流行使用程度的有效指标,对世界范围内开发语言的走势具有重要参考意义.随着数据挖掘.机器学习和人工智能相关概念的风行,Python一举收获2018年年度语言,这也是Pyt ...

  5. python将多个列表合并_Python中多个列表与字典的合并方法

    Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['','',''] b = ['','',''] a += b print(a) >>>['','','' ...

  6. python的编码表_Python算法之旅列表的纷争之二进制编码

    列表的纷争之二进制编码 小美:最近数学老师给我们玩了有趣的猜年龄游戏,他显示了6张表格,你只要观察这6张表格,然后回答"是"与"不是"就可以了.老师可以根据你的 ...

  7. python中列表数据类型_Python数据类型之List列表实例详解

    本文实例讲述了Python数据类型之List列表.分享给大家供大家参考,具体如下: list列表 1.概述: 通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班 ...

  8. python修改列表元素_python 3 基础之列表和列表添加元素、修改元素、查找元素、删除元素、排序、嵌套、取最值...

    列表(与字符串相似,字符串用引号,而列表用中括号和逗号.引号,列表中可以保存多种数据类型) # 定义一个列表,格式:列表名=[元素1,元素2.元素3.......] 列表使用与字符串的索引编号一致,如 ...

  9. python中列表下标_Python中如何在列表中找到某个元素的下标

    题目 对于列表 ["foo", "bar", "baz"]和在列表中的元素"bar",如何得到它的下标(1) 回答一 & ...

最新文章

  1. c# C++接口封装 汽车模拟仿真
  2. 【Leetcode】二分法左侧边界右侧边界模板
  3. shiro+jwt进行认证和授权的解决方案代码实例
  4. 【配置属性】—Entity Framework实例详解
  5. eclipse中查怎样看某个方法调用了谁
  6. 盘点下常用的接口测试工具,有几个你肯定没用过
  7. 思维导图很难做?MindManager教你一招致胜!
  8. cad二次开发的一些简单入门实例
  9. 普渡大学计算机科学师生比,公立常春藤高校普渡大学,附申请要求+录取难度!...
  10. c语言 笔试 多选题,全国计算机等级考试C语言十六个选择题类高频知识点
  11. 解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。
  12. python用glob读取文件夹
  13. 全国青少年编程等级考试python一级真题2020年9月(含题库答题软件账号)
  14. 解决PDapp占据C盘空间的方法
  15. 再说说TCP和UDP源端口的确定
  16. css 颤动_颤动-微光效果
  17. Unity3d开发之十五:详解困惑,事件分发和侦听系统(委托实现)
  18. C# STMP发送邮件简例
  19. iphone5的 A6与 A5X处理器只相差10%而已?
  20. The 2019 ICPC Asia-East Continent Final A-City

热门文章

  1. c++计算数组均值方差_协方差分析的基本思想和应用前提(上)
  2. iosalipay_iOS支付宝支付主要代码
  3. java并发AtomicIntegerFieldUpdater
  4. 顺序一致性内存模型与JMM的“顺序一致性”
  5. 手掌手指分割算法(源码)
  6. SeaJS 与 RequireJS 的差异对比
  7. C3P0连接池详细配置
  8. RGB想YCbCr空间的变换
  9. PB调用C# Windows窗体
  10. C程序中对时间的处理——time库函数详解转