1 推导式简介


推导式comprehensions(又称解析式),是Python的一种独有特性。

推导式是可以从一个数据序列构建另一个新的数据序列的结构体。

推导式有三种形式:

1)列表推导式 (list)

2)字典推导式 (dict)

3)集合推导式 (set)

2 列表推导式


是用可迭代对象生成列表的一种方法

列表推导式是表达式

2.1 基本的列表推导式

语法

[表达式 for 变量 in 可迭代对象]

[表达式 for 变量 in 可迭代对象 if 真值表达式]

示例1:[1,2,3,4,5,6.......,10]

[x for x in range(1, 11)]

   L = []
   for x in range(1, 10001):
       L.append(x)

示例2:[1, 4, 9, 16, 25, ...]

[x**2 for x in range(1, 11)]

示例3:[1 3 5 7 .... 99]

[x for x in range(1, 100) if x % 2 == 1]

示例4:生成1000以内的所有素数的列表

def is_prime(x):
    """
    判断x是否为素数(或质数)
    如果为素数,返回True
    """
    if x <= 1:
        return False
    for i in range(2, x):
        if x % i == 0:
            return False
    return True

L = [x for x in range(1, 10000) if is_prime(x)]
print(L)

示例5:

s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]

L = []
for x in s1:
   for y in s2:
       L.append(x + y)

如何生成以下列表
L = ['A1', 'B2', 'C3']

s1 = 'ABC'
s2 = '

a = []
for i in range(len(s1)):
    a.append(s1[i]+s2[i])
print(a)

2.2 嵌套的列表推导式

语法:

[表达式
   for 变量1 in 可迭代对象1 if 条件表达式1
   for 变量2 in 可迭代对象2 if 条件表达式2
]

示例1:

s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]

s1 = "ABC"
s2 = "
L = [x + y for x in s1 for y in s2]

3 字典推导式


语法:

{ 键表达式 : 值表达式 for 变量 in 可迭代对象 if 真值表达式 [for 变量 in 可迭代....]}

字典中的用法与列表中的用法类似,将 [ ] 换成  { } 即可

示例1:

生成表达式:{1:"1的平方", 4:"2的平方", 9:'3的平方', ..100:'10的平方'}

d = {x**2 : str(x)+'的平方' for x in range(1, 11)}

示例2:快速更换key和value

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

示例3:将字典中大小写a b 键所对应的值合并

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}

备注: D.get(key, default)   返回键 key 所对应的值,如果没有此键,则返回 default(默认 None)

参考 python的各种推导式(列表推导式、字典推导式、集合推导式)

4 集合推导式


语法:

集合推导式语法:
  { 表达式  for 变量 in 可迭代对象 if 真值表达式  [for 变量 in 可迭代....]}

集合中的用法与列表中的用法类似,将 [ ] 换成  { } 即可

示例1:

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

注意:集合中具有特有的性质,其元素不能重复

示例2:

生成集合:{1, 8, 27, 4**4... n**n}

s = {x ** x for x in range(1, 10)}

另外还有更为广泛的应用:python的推导式(实用)  python-列表推倒式-轻量级循环

python学习笔记013——推导式的更多相关文章

  1. python学习笔记013——模块

    1 模块module 1.1 模块是什么 模块是包含一系列的变量,函数,类等程序组 模块通常是一个文件,以.py结尾 1.2 模块的作用 1. 让一些相关的函数,变量,类等有逻辑的组织在一起,使逻辑更 ...

  2. python学习笔记013——模块中的私有属性

    1 私有属性的使用方式 在python中,没有类似private之类的关键字来声明私有方法或属性.若要声明其私有属性,语法规则为: 属性前加双下划线,属性后不加(双)下划线,如将属性name私有化,则 ...

  3. python学习笔记013——内置函数dir()

    1 描述 dir() 函数 不带参数时,返回当前范围内的变量.方法和定义的类型列表: 带参数时,返回参数的属性.方法列表. 如果参数包含方法__dir__(),该方法将被调用. 如果参数不包含__di ...

  4. python学习笔记013——包package

    1 包(模块包)package 1.1 包的定义 包是将模块以文件夹的组织形式进行分组管理的方法 1.2 作用 分类管理,有利于防止命名冲突 可以在需要时加载一个或部分模块,而不是全部模块 mypac ...

  5. python基础学习1-列表推导式和字典推导式

    #!/usr/bin/env python # -*- coding:utf-8 -*- #列表推导式 取得100内可以被2整除且不能被3整除的数字 a=[i for i in range(100) ...

  6. Python 学习笔记(下)

    Python 学习笔记(下) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(下) 函数设计与使用 形参与实参 ...

  7. Python 学习笔记(上)

    Python 学习笔记(上) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(上) 基础知识 基本输入输出 模 ...

  8. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  9. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

随机推荐

  1. WhyDX9:翻写D3D红龙书中的程序

    之前写过一套学习OpenGL的框架:WhyGL,即然有了GL那也应该再写个学习D3D的框架:WhyDX9.两个程序的架构相同,然后这个程序是将D3D红龙那本书的DEMO翻写了一遍.先将可执行程序发一下 ...

  2. [每日一题] OCP1z0-047 :2013-08-04 INSERT --- WITH CHECK OPTION

    这题是考:insertWITH CHECK OPTION的用法 insert into (<select clause> WITH CHECKOPTION) values (...) 这样 ...

  3. Unity的延迟管线

    unity buildin deferred pipeline rt0 albedo rt1 spec rt2 normal rt3 emissive rt4 shadowmask rt3的使用方式 ...

  4. python3 使用openpyxl库读写excel(续)

    官网:https://openpyxl.readthedocs.io/en/stable/

  5. Ionic 4 and the Lifecycle Hooks

    原文: https://medium.com/@paulstelzer/ionic-4-and-the-lifecycle-hooks-4fe9eabb2864 ------------------- ...

  6. 【理解】column must appear in the GROUP BY clause or be used in an aggregate function

    column "ms.xxx_time" must appear in the GROUP BY clause or be used in an aggregate functio ...

  7. winform暴走表情制作器

    c# winform暴走表情制作器,项目工程下载地址:项目下载地址 程序运行截图: 部分代码:获取鼠标所在的图片中坐标 private void pictureBox1_MouseDown(objec ...

  8. MVC 之 <%%>相关内联代码块用法

    1.<%@ ... %> 添加引用; 2.<% ... %> <%%>之间可以执行服务端代码,如<% foreach (DataRow dataRow in ...

  9. IE下target获得焦点时存在虚线的问题

    IE下target获得焦点时存在虚线时,用IE的特定属性:hidefocus="true"即可解决!

  10. RTT下spi flash+elm fat文件系统移植小记

    背景: MCU:STM32F207 SPI flash: Winbond W25Q16BV OS: RTT V1.1.1 bsp: STM32F20x 1 将spi_core.c,spi_dev.c及 ...