python技巧(1)--如何转换itertools.chain对象为数组
总第 115 篇文章,本文大约 900 字,阅读大约需要 3 分钟
之前做1月总结的时候说过希望每天或者每2天开始的更新一些学习笔记,这是开始的第一篇。
这篇介绍的是如何把一个 itertools.chain
对象转换为一个数组。
参考 stackoverflow 上的一个回答:Get an array back from an itertools.chain object,链接如下:
https://stackoverflow.com/questions/26853860/get-an-array-back-from-an-itertools-chain-object
例子:
list_of_numbers = [[1, 2], [3], []]
import itertools
chain = itertools.chain(*list_of_numbers)
解决方法有两种:
第一种比较简单,直接采用 list
方法,如下所示:
list(chain)
但缺点有两个:
会在外层多嵌套一个列表
效率并不高
第二个就是利用 numpy
库的方法 np.fromiter
,示例如下:
>>> import numpy as np
>>> from itertools import chain
>>> list_of_numbers = [[1, 2], [3], []]
>>> np.fromiter(chain(*list_of_numbers), dtype=int)
array([1, 2, 3])
对比两种方法的运算时间,如下所示:
>>> list_of_numbers = [[1, 2]*1000, [3]*1000, []]*1000
>>> %timeit np.fromiter(chain(*list_of_numbers), dtype=int)
10 loops, best of 3: 103 ms per loop
>>> %timeit np.array(list(chain(*list_of_numbers)))
1 loops, best of 3: 199 ms per loop
可以看到采用 numpy
方法的运算速度会更快。
欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!
如果觉得不错,在看、转发就是对小编的一个支持!
python技巧(1)--如何转换itertools.chain对象为数组相关推荐
- Python技巧——根据函数名获得函数对象
有时我们需要将一个文件的信息(类.函数及变量)保存到文件,我们不能直接保存函数对象,而是将其转化为fn.__name__,问题来了,当我们想通过读取文件的形式重新配置这些类.函数时,该如何把这些字符串 ...
- python生成json_生成动态嵌套JSON对象和数组-python - python
正如问题所解释的那样,我一直在尝试生成嵌套的JSON对象.在这种情况下,我有for循环从字典dic中获取数据.下面是代码: f = open("test_json.txt", 'w ...
- Python Itertools.chain()用法【将一组迭代对象串联起来,形成一个更大的迭代器】
它是一个需要一系列可迭代对象并返回一个可迭代对象的函数.它将所有可迭代对象组合在一起,并生成一个可迭代对象作为输出. 场景一: chain()可以把一组迭代对象串联起来,形成一个更大的迭代器: &g ...
- python itertools模块chain函数功能详解 itertools.chain(*iterable)
Itertools模块, itertools提供了高效快捷的用于操作迭代对象的函数.通过使用这个模块,可以简化代码. Itertools.chain语法 Itertools.chain(*iterab ...
- Python——itertools.chain.from_iterable将多个迭代器连接成一个统一的迭代器的最高效的方法
1 致谢 感谢网友"-柚子皮-"的帮助, 原文链接如下: https://blog.csdn.net/pipisorry/article/details/45171451 感谢 P ...
- 弄懂这56个Python技巧,秒变Python大神
1. 枚举 - enumerate 可以有参数哦 之前我们这样操作: i = 0for item in iterable: print i, item i += 1 现在我们这样操作: for i, ...
- 程序员必知的20个Python技巧
作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...
- 程序员必知的 20 个 Python 技巧!
本文将向你展示20条非常实用的Python使用技巧. 作者 | Duomly 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python是一门流行且应用广 ...
- 30个必会python技巧
直接交换2个数字的位置 Python 提供了一种直观的方式在一行代码中赋值和交换(变量值).如下所示: x, y = 10, 20 print(x, y) x, y = y, x print(x, y ...
最新文章
- php table字段排序,jQuery如何对table进行排序操作的示例详解
- 亿级数据湖统一存储技术实践
- redis详解(四)-- 高可用分布式集群
- Redis 系列之一
- JPA 一对一设置无效,连表查询的时候另外一个实体类的对象值为空
- HDFS的简介及基本操作(常用的命令参数介绍)
- 计算机专业英语的理解,计算机专业英语之理解网络地址
- excel如何输入毫秒级时间
- 英语计算机职称考试查询成绩,北京职称外语计算机成绩长期有效
- Web 开发中使用了 Vim 作为主编辑器之后......
- sourcetree 忽略目录_SourceTree安装与使用方法
- springboot整合junit_springBoot整合junit(笔记)
- Thinkpad常见问题大全(转载联想工程师博客)
- 该网站安全证书有问题 宝塔面板配置ssl中遇到的“坑”
- MySQL 中的boolean/bool/tinyint(1)表示布尔类型
- 小米10 MIUI11 安卓10安装面具获取root权限
- Ubuntu下ping命令提示域名解析失败以及无法打开网页
- Python 自动化办公-玩转 Word
- 本周大新闻|FDA公布XR认证医疗名单,索尼推数字孪生平台Mapray
- 关于电脑出现 “USB Serial Port“ 黄色感叹号
热门文章
- asp.net Linux 界面,在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
- 深度ip转换器手机版app_房串串经纪人版app下载-房串串经纪人版app手机版 v1.0.0...
- 计算机如何查找目标,如何使用命令行查找计算机地理位置? | MOS86
- js中 json详解
- 使用composer下载依赖包下载失败的解决方法
- 判断一个数的二进制形式是否只有一个1,是的话就输出
- uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏
- Taro+react开发(88):大写px 控制样式
- 前端学习(3219):...扩展
- 23为什么要帮助他人