python, itertools模块
通过itertools模块,可以用各种方式对数据进行循环操作
1, chain()
from intertools import chain
for i in chain([1,2,3], ('a', 'b', 'c'), 'abcde'):
print i
chain将可迭代的对象链接在一起,iter1循环完后,接着循环iter2.直到所有的iter循环完。
2, combinations()
from intertools import combinations
for i in combinations([1,2,3,4], 2):
print i
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
第一个参数是一个可迭代对象, 第二个参数是返回的长度。
3, dropwhile(predicate, iterable)
和fileter()的功能差不多
from intertools import dropwhile
x = lambda x : x < 5
for i in dropwhile(x, [1,2,3,4,5,6,7,8]):
print x
将iterable中不满足x的都扔掉了,只循环满足条件x的.
4, imap()
和Python 自带的map一样
eg:
from itertools import imap
x = lambda x, y : x + y
for i in imap(x, '1234', 'abcd'):
print i
1a
2b
3c
4d
x的两个参数分别来自于后面两个可迭代对象
for i in map(x, '1234', 'abcd'):
pirnt i
和上面结果一样
5,islice(iterable, start, end, step)
from itertools import islice
t = 'abcdefghijk'
for i in islice(t, 0, 5, 1):
print i
指循环s前5个元素。t[0], t[1], t[2], t[3], t[4]
for i in islice(t, 5):
print i
t之后只有一个参数,这个代表end. 如果想让这个代表start, 必须这样写: for i in islice(t, 5, None):表示从t[5]开始循环,一直到结束。步进默认为1.
6, repeat(object, times) 将object循环n次,不是循环object里面的元素,是循环它本身,不一定要是可迭代对象
from itertools import repeat
for i in repeat(5, 3):
print i
得到 5 5 5 (5是一个整数,所以不限于可迭代的对象,只是循环object本身,是什么就循环几次什么)
其他用法:izip(ite1,ite2) (等同于Python自带的zip),
freemao
FAFU
python, itertools模块的更多相关文章
- 转:Python itertools模块
itertools Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>& ...
- python itertools 模块
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数 首先,我们看看itertools提供的几个“无限”迭代器: >>> import itertools ...
- python itertools 模块讲解
1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存. 使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环. - 无限迭代器 itertool ...
- python itertools模块练习
参考 <python标准库> 也可以参考Vamei博客 列表用着很舒服,但迭代器不需要将所有数据同时存储在内存中. 本章练习一下python 标准库中itertools模块 合并 和 分解 ...
- Python itertools模块详解
这货很强大, 必须掌握 文档 链接 http://docs.python.org/2/library/itertools.html pymotw 链接 http://pymotw.com/2/iter ...
- [转载] Python itertools模块详解
原文在这里,写的很详细,感谢原作者,以下摘录要点. itertools用于高效循环的迭代函数集合. 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, st ...
- Python itertools模块中的product函数
product 用于求多个可迭代对象的笛卡尔积(Cartesian Product),它跟嵌套的 for 循环等价.即: product(A, B) 和 ((x,y) for x in A for y ...
- python itertools模块实现排列组合
转自:https://blog.csdn.net/specter11235/article/details/71189486 一.笛卡尔积:itertools.product(*iterables[, ...
- Python标准模块--itertools
1 模块简介 Python提供了itertools模块,可以创建属于自己的迭代器.itertools提供的工具快速并且节约内存.开发者可以使用这些工具创建属于自己特定的迭代器,这些特定的迭代器可以用于 ...
随机推荐
- MyEclipse8.6 破解以及注册码
建立JAVA工程文件.将以下Java代码拷贝至类中并执行即可. 注册码: register name: bobo9360013 Serial:oLR8ZC-855550-6065705698041 ...
- LInux软件的卸载和安装(转)
在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) tar包,如software- ...
- 使用Parallel
Parallel是.net framework为我们封装的用于并行的静态类,它使用起来简单灵活.它为我们提供了三个方法,分别是Invoke,For和ForEach.下面来进行分别演示. Paralle ...
- 在ASP.NET MVC中使用CKEditor和CkFinder
在你需要使用editor控件的页面头部添加: <head> ... <script type="text/javascript" src="/ckedi ...
- [示例]NSDictionary编程题-字典的排序应用(iOS4班)
代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepo ...
- Oracle连接查询内容整理
--内连接--select t.*,b.bumenmc from T_HQ_RYXX t,t_hq_bm b where t.bum = b.bumenbm--select * from t_hq_r ...
- MyEclipse 修改代码不生效
最近得了一个项目,java开发的web项目,修改代码时,无论怎么改,都不生效: 各种度娘,没用. 原因是没有建立发布设定 这个东西我开始不理解它的作用,现在知道了: mysqleclipse项目在一个 ...
- HDU 1698 区间更新
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- java日期的运用(DateUtils工具类)
public static void main(String[] args) { Date now = new Date(); SimpleDateFormat sd = new SimpleDate ...
- ros与下位机通信常用的c++ boost串口应用
一.首先移植c++ boost 库: 1. 先去 Boost官网 下载最新的Boost版本, 我下载的是boost_1_6_0版本, 解压. 2. 进入解压后目录: cd boost_1_6_0, 执 ...