yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

    • python概述

    • python环境搭建

    • python基础语法

      • 变量与常量
      • 基本数据类型-整数类型
      • 基本数据类型-浮点数类型
      • 基本数据类型-复数类型
      • 基本数据类型-布尔类型
      • 基本数据类型-bytes类型
      • 复杂数据类型-序列
      • 复杂数据类型-字符串
      • 复杂数据类型-列表
      • 复杂数据类型-元组
      • 复杂数据类型-字典
      • 复杂数据类型-集合
      • list,tuple,dict,set的区别和联系
      • 推导式
        • 2. 推导式
        • 列表推导式
          • 嵌套列表推导式
        • 字典推导式
        • 集合推导式
        • 元组推导式(生成器表达式)
      • 浅拷贝和深拷贝
      • 运算符
      • 输入输出
    • python关键字与标识符

    • python流程控制

    • python函数

    • python内置函数

    • python面向对象

    • python模块与包

    • python文件IO与OS

    • python异常处理机制

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • python基础
  • python基础语法
YiZhang-You
2023-05-09
目录

推导式

# 2. 推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

# 列表推导式

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]
或者 
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

squares = list(map(lambda x: x**2, range(10)))

squares = [x**2 for x in range(10)]
1
2
3
4
5
6
7
8
9

combs = []
for x in [1,2,3]:
  for y in [3,1,4]:
    if x != y:
      combs.append((x, y))

combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
1
2
3
4
5
6
7
8
9
10

# 嵌套列表推导式

 matrix = [
     [1, 2, 3, 4],
     [5, 6, 7, 8],
     [9, 10, 11, 12],
]

[[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

# 等价于
transposed = []
for i in range(4):
     transposed.append([row[i] for row in matrix])

transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 字典推导式

{ key_expr: value_expr for value in collection }
或
{ key_expr: value_expr for value in collection if condition }

{x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
1
2
3
4
5
6

# 集合推导式

{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }

a = {x for x in 'abracadabra' if x not in 'abc'}
a
{'r', 'd'}
1
2
3
4
5
6
7

# 元组推导式(生成器表达式)

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。

元组推导式基本格式:

(expression for item in Sequence )
或
(expression for item in Sequence if conditional )
1
2
3

元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 **()**圆括号将各部分括起来,而列表推导式用的是中括号 [] ,另外元组推导式返回的结果是一个生成器对象。

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象

>>> tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)
1
2
3
4
5
6
编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
list,tuple,dict,set的区别和联系
浅拷贝和深拷贝

← list,tuple,dict,set的区别和联系 浅拷贝和深拷贝→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式