python的推导式是用于快速处理数据的方法。

主要有:列表推导式、集合推导式和字典推导式

import time
import numpy as np

列表推导式:

1. 速度快

t1 = time.time()
aa = [ii for ii in range(1000000) if ii % 2 ==0] # 取出偶数
#print(aa)
t2 = time.time()
print('总共耗时为:' + str(t2 - t1) + ' 秒') # 总共耗时为:0.07380175590515137 秒

当直接使用for循环时:

t3 = time.time()
bb = []
for ii in range(1000000):
if ii % 2 ==0:
bb.append(ii)
#print(bb)
t4 = time.time()
print('总共耗时为:' + str(t4 - t3) + ' 秒') # 总共耗时为:0.12566447257995605 秒

2. 嵌套多层for语句

np_tmp = np.ones((10000,10000))
t5 = time.time()
#cc = [jj for ss in np_tmp for jj in ss]
cc = [ # 写成这种形式看上去更直观
jj
for ss in np_tmp
for jj in ss
]
t6 = time.time()
print('总共耗时为:' + str(t6 - t5) + ' 秒') # 总共耗时为:7.131944894790649 秒

直接使用for:

t7 = time.time()
dd = []
for ss in np_tmp:
for jj in ss:
dd.append(jj)
t8 = time.time()
print('总共耗时为:' + str(t8 - t7) + ' 秒') # 总共耗时为:14.19404673576355 秒

生成器:

# 生成器,将上述的[]改成()即可实现
gene_ = (i for i in range(30) if i % 2 is 0)
print(list(gene_)) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
print(gene_) # <generator object <genexpr> at 0x000001FEF348C5E8>

字典推导式,可用于快速改变字典形式:

ee = {'大贤':100, '大蘅':80, '离':50, '默':40}
for ii,dict_ in enumerate(ee.items()):
print(ii)
print(dict_[0], dict_[1])
ee_1 = {key: value+100 for key, value in ee.items()}
print(ee_1) # {'大贤': 200, '大蘅': 180, '离': 150, '默': 140}
ee_2 = {ii: {dict_[0]:dict_[1]+100} for ii,dict_ in enumerate(ee.items())}
print(ee_2) # {0: {'大贤': 200}, 1: {'大蘅': 180}, 2: {'离': 150}, 3: {'默': 140}}

集合推导式(快速产生集合):

ff = '你是不是来这里买东西的?买啥?'
set_ = {w for w in ff} # type(set_) is: set
print(set_) # 集合(会去掉重复值):{'?', '来', '的', '你', '啥', '这', '不', '里', '西', '买', '是', '东'}

参考:

https://www.cnblogs.com/tkqasn/p/5977653.html

https://www.cnblogs.com/amiza/p/10159293.html

python的推导式 —— 列表推导式、集合和字典推导式的更多相关文章

  1. Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍

    更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...

  2. 干货!Python中字符串、列表、元祖、字典,集合之间的转换

    一.字符串的转化 1.字符串转换成列表 字符串转换成list 的时候,str可以作为迭代对象,直接放入:也可以使用split对字符串进行切割.然后返回list s = '1a1b1c' print(l ...

  3. Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]

    print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...

  4. python基础知识之列表、元祖、字典、集合、字符串。

    1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 names='zhangyang guyun xiangpeng xuliangwei' nam ...

  5. python学习-day12:列表、元祖、字典介绍和内置

    list:列表 >>>----可以被修改.修改成元素,元素可以使单独的数字,也可以是:新的list. 通过:链表..每个元素存储的时候,同时会指向下一个元素. 二.list编辑修改方 ...

  6. Python基础:数据类型-列表与元组(6)

    Python中数据结构主要有序列.集合和字典. 1. 通用序列操作 Python内置了多种序列,其中最常用的两种:列表和元组.另一种重要的序列是字符串. 列表和元组的主要不同在于:列表是可以修改的,而 ...

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

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

  8. python列表推导式详解 列表推导式详解 字典推导式 详解 集合推导式详解 嵌套列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  9. Python中的推导式(列表推导式、字典推导式、集合推导式)

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

随机推荐

  1. Html JavaScript网页制作与开发完全学习手册

    Html JavaScript网页制作与开发完全学习手册 篇 HTML技术章 HTML入门 1.1 什么是HTML 1.1.1 HTML的特点 1.1.2 HTML的历史 1.2 HTML文件的基本结 ...

  2. delimiter关键字

    默认的sql语句以分号";"表示结束.mysql解释器每遇到一个分号,执行一段语句.可以通过delimiter更改语句结束符 mysql>delimiter &&am ...

  3. C# Task 暂停与取消 或 C#中可取消的Task

    (1)https://www.cnblogs.com/zhengzc/p/10724839.html (2)https://blog.csdn.net/hxfhq1314/article/detail ...

  4. ubuntu16.04+cuda8.0+cudnn6.0安装mxnet(极简!+成功!)

    安装MXNet 1.安装 CUDA8.0对应的mxnet版本是mxnet-cu80(同理如果是CUDA9.0对应版本则是mxnet-cu90). 如果pip安装过慢,请参考 Ubuntu16.10下配 ...

  5. DevOps - 基础设施配置测试工具Serverspec

    1 - Serverspec Serverspec是可以测试基础设施配置的工具,能够验证配置管理工具(Ansible.Puppet.Chef等)的配置结果,可以实现基础设施测试代码化自动化. 测试代码 ...

  6. 从ArcGIS连接Oracle数据库,并将Oracle数据库注册到ArcGIS Server

    环境说明 客户端机器环境: ① Win7 SP1 64位 ② ArcGIS Desktop 10.2 32位 ③ ArcGIS Server 10.2 64位 服务器环境 ① Windows Serv ...

  7. python从写定时器学习Thread

    目录 python从写定时器学习Thread Timer 对象 粗陋的循环定时器 更 pythonic 循环定时器 FAQ python从写定时器学习Thread python 如何写一个定时器,循环 ...

  8. kubernetes-dashboard获取令牌登陆

    前言:kubernetes核心组件服务启动正常 一.在kubernetes-dashboard.yaml父级文件夹下创建account.yaml文件用于访问kubernetes-dashboard,添 ...

  9. Python Number(数字)

    Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: A ...

  10. 不会前后端,用vps搭建个人博客(二)

    <接上一篇>   四.添加网页内容 1.下载安装WordPress 输入以下命令: wget https://wordpress.org/latest.tar.gz 当然你也可以用浏览器进 ...