Python标准库(1) — itertools模块

專 欄

❈Jerry,Python中文社区专栏作者。

blog:https://my.oschina.net/jhao104/blog

github:https://github.com/jhao104

简介

官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数。

itertools.chain(*iterable)

将多个序列作为一个单独的序列返回。 例如:

import itertoolsfor each in itertools.chain('i', 'love', 'python'):    print each

输出:

ilovepython

itertools.combinations(iterable, r)

返回指定长度的"组合" 例如:

import itertoolsfor each in itertools.combinations('abc', 2):    print each

输出:

('a', 'b')('a', 'c')('b', 'c')

itertools.combinations_with_replacement(iterable, r)

返回指定长度的“组合”,组合内元素可重复 例如:

import itertoolsfor each in itertools.combinations_with_replacement('abc', 2):    print each

输出:

('a', 'a')('a', 'b')('a', 'c')('b', 'b')('b', 'c')('c', 'c')

itertools.product(*iterable[,repeat])

返回指定长度的所有组合,可理解为笛卡尔乘积 例如:

import itertoolsfor each in itertools.product('abc', repeat=2):    print each

('a', 'a') ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'b') ('b', 'c') ('c', 'a') ('c', 'b') ('c', 'c')

itertools.premutations(iteravle[,r])

返回长度为r的排列 例如:

import itertoolsfor value in itertools.permutations('abc', 2):    print value

输出:

('a', 'b')('a', 'c')('b', 'a')('b', 'c')('c', 'a')('c', 'b')

itertools.compress(data,selector)

返回selector为True的data对应元素 例如:

import itertoolsfor each in itertools.compress('abcd', [1, 0, 1, 0]):    print each

输出:

ac

itertools.count(start=0,step=1)

返回以start开始,step递增的序列,无限递增 例如:

import itertoolsfor each in itertools.count(start=0, step=2):    print each

输出:

123..

itertools.cycle(iterable)

将迭代器进行无限迭代 例如:

import itertoolsfor each in itertools.cycle('ab'):    print each

输出:

abab..

itertools.dropwhile(predicate, iterable)

直到predicate为真,就返回iterable后续数据, 否则drop掉 例如:

import itertoolsfor each in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):    print each

输出:

6821

itertools.groupby(iterable[,key])

返回一组(key,itera),key为iterable的值,itera为等于key的所有项 例如:

import itertoolsfor key, vale in itertools.groupby('aabbbc'):    print key, list(vale)

输出:

a ['a', 'a']b ['b', 'b', 'b']c ['c']

itertools.ifilter(predicate, iterable)

返回predicate结果为True的元素迭代器,如果predicate为None,则返回所有iterable中为True的项 例如:

import itertoolsfor value in itertools.ifilter(lambda x: x % 2, range(10)):    print value

输出:

13579

itertools.ifilterfasle(predicate,iterable)

返回predicate为False的元素,如果predicate为None,则返回所有iterable中为False的项 例如:

import itertoolsfor value in itertools.ifilterfalse(lambda x: x % 2, range(10)):    print value

输出:

02468

itertools.imap(function,*iterables)

相当于迭代器方式的map() 例如:

import itertoolsfor value in itertools.imap(lambda x, y: x+y, (1,2,3), (4,5,6)):    print value

输出:

579

itertools.islice(iterable, start,stop[,step])

相当于迭代器方式的切片操作 例如:

import itertoolsfor value in itertools.islice('abcdefg', 1, 4, 2):    print value

输出:

bd

itertools.repeat(object,[,times])

不停的返回object对象,如果指定了times,则返回times次 例如:

import itertoolsfor value in itertools.repeat('a', 2):    print value

输出:

aa

itertools.starmap(function,iterable)

返回function(iter)的值,iter为iterable的元素 例如:

import itertoolsfor value in itertools.starmap(lambda x, y: x * y, [(1, 2), (3, 4)]):    print value

输出:

212

itertools.takewhile(predicate,iterable)

如果predicate为真,则返回iterable元素,如果为假则不再返回,break. 例如:

import itertoolsfor value in itertools.takewhile(lambda x: x < 5, [1, 3, 5, 6]):    print value

输出:

13

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-02-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Python变量与字符串

版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。

2203
来自专栏全沾开发(huā)

学习zepto.js(对象方法)[6]

学习zepto.js(对象方法)[6] first: 获取当前对象集合中的第一个dom元素。 $("div").first();// ...

3548
来自专栏python成长之路

函数的不定长参数

1392
来自专栏浪淘沙

Python学习总结3--Python基础

    a = 100 if a >= 0:     print(a) else:     print(-a) 其中,#为注...

991
来自专栏进击的君君的前端之路

正则表达式

1685
来自专栏开源优测

[快学Python3]Sets(集合)

概述 set是Python的基本数据类型,它有可变集合(set()) 和不可变集合(frozenset)两种,在本节中,我们主要讲解set的使用方法。set和d...

2857
来自专栏angularejs学习篇

angularjs学习第八天笔记(指令作用域研究)

angularjs其作用域通过scope来实现,其取值有三种情况:true、false、{}

891
来自专栏五毛程序员

C++知识点整理——持续更新

2144
来自专栏coder修行路

go基础之--函数和map

在整理函数之前先整理一下关于指针 指针 普通类型变量存的就是值,也叫值类型。指针类型存的是地址,即指针的值是一个变量的地址。 一个指针指示值所保存的位置,不是所...

2947
来自专栏王磊的博客

es6分享——变量的解构赋值

变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前的写法: var a = 1;...

2837

扫码关注云+社区

领取腾讯云代金券