Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

count 创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算(注意:此迭代器不支持长整数)

如果超出了sys.maxint,计数器将溢出并继续从-sys.maxint-1开始计算

import itertools
for item in itertools.count(1,3):
      if item>20:
       break
      print(item)
...
1
4
7
10
13
16
19
>>>

传入一个序列,无限循环下去:
import itertools
its=["a","b","c","d"]
for item in itertools.cycle(its):
    print (item)
a
b
c
d
a
b
.
.
.

创建一个迭代器,重复生成object,times(如果已提供)指定重复计数,如果未提供times,将无止尽返回该对象。
import itertools
its=["a","b","c"]
for item in itertools.repeat(its,4):
    print (item)

itertools.chain(*iterables)
*iterables为一个或多个可迭代序列
作用:返回所有可迭代序列

import itertools
its=["a","b","c","d"]
hers=["A","B","C","D"]
others=["1","2","3","4"]
for item in itertools.chain(its,hers,others):
    print (item)
...
a
b
c
d
A
B
C
D
1
2
3
4

[2] compress
itertools.compress(data, selectors)
data为数据对象
selectors为选择器(规则)
作用:返回数据对象中对应规则为True的元素
import itertools

its=["a","b","c","d","e","f","g","h"]
selector=[True,False,1,0,3,False,-2,"y"]
for item in itertools.compress(its,selector):
    print (item)
...
a
c
e
g
h

[x for x in filter(None,range(2,10))]
list(filter(None,range(2,10)))
chain.from_iterable()
将单个iterable中的所有元素拼接输出。
d=['串一株幸运草','串一个同心圆']
for i in itertools.chain.from_iterable(d):
    print(i)
...











dropwhile()
itertools.dropwhile(predicate, iterable)
从头开始,干掉不符合的元素,直到第一个正确元素。    
for i in itertools.dropwhile(lambda x:x<7,[1,2,3,6,7,8,2,4,5,9]):
   print(i)
...
7
8
2
4
5
9

filterfalse()
输出为错的要素:
for i in itertools.filterfalse(lambda x:x=='moyu',['moyu','jinye']):
    print(i)
...
jinye

groupby()
itertools.groupby(iterable, key=None)
将iterable同要素聚合输出:
for k,g in itertools.groupby('aaAAaBBBCCCCC'):
    print(k)
    print(list(g))
...
a
['a', 'a']
A
['A', 'A']
a
['a']
B
['B', 'B', 'B']
C
['C', 'C', 'C', 'C', 'C']

islice()
切片操作的迭代器版本
>>> for i in itertools.islice('fengliutitangShawn',0,None,2):
...     print(i)
...
f
n
l
u
i
a
g
h
w

tee()
itertools.tee(iterable, n=2)
创建n个与iterable相同的独立迭代器。
for i in itertools.tee([1,2,3,4,5,6]):
    for j in i:
        print(j)
...
1
2
3
4
5
6
1
2
3
4
5
6

组合生成器
product()
itertools.product(*iterables[,repeat=1])
对*iterables进行笛卡尔积运算
for i in itertools.product('Tom','Jerry',repeat=1):
    print(i)
...
('T', 'J')
('T', 'e')
('T', 'r')
('T', 'r')
('T', 'y')
('o', 'J')
('o', 'e')
('o', 'r')
('o', 'r')
('o', 'y')
('m', 'J')
('m', 'e')
('m', 'r')
('m', 'r')
('m', 'y')

python之itertools的更多相关文章

  1. python 之 itertools模块

    官方:https://yiyibooks.cn/xx/python_352/library/itertools.html 参考: https://blog.csdn.net/neweastsun/ar ...

  2. python基础=== itertools介绍(转载)

    原文链接:http://python.jobbole.com/85321/ Python提供了一个非常棒的模块用于创建自定义的迭代器,这个模块就是 itertools.itertools 提供的工具相 ...

  3. Python中itertools.groupby分组的使用

    Python中itertools.groupby分组的使用 有时候我们需要给一个列表按照某个属性分组,可以借助groupby来实现. 比如:一下列表我想以严重程度给它分组,并求出每组的元素个数. fr ...

  4. 【Python开发】Python:itertools模块

    Python:itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器 ...

  5. python迭代器Itertools

    https://docs.python.org/3.6/library/itertools.html 一无限迭代器: Iterator Arguments Results Example count( ...

  6. Python的itertools模块

    本章将介绍Python自建模块itertools,更多内容请参考:Python参考指南 python的自建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertool ...

  7. Python:itertools库的使用

    转于:https://blog.csdn.net/neweastsun/article/details/51965226 博主:neweastsun的专栏 介绍 itertools是python内置的 ...

  8. Python 模块 itertools

    python 2.6 引入了itertools模块,使得排列组合的实现非常简单: import itertools 有序排列:e.g., 4个数内选2个排列: >>> print l ...

  9. Python中itertools模块

    itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...

随机推荐

  1. LC 526. Beautiful Arrangement

    uppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is constr ...

  2. 读取 .properties文件到数据库

    最近有一个这样的需求,将原本配置文件 .properties文件改到数据库当中,这样不用每次修改都重启服务器 java自带有处理 .properties文件的专有类 Properties,处理也很不错 ...

  3. 重置csr

    重置csr 注意:下面操作仅在刚安装k8s后24小时内有效 分析:kubelet启动后会生成如下文件.kubelet.conf文件决定了csr的存在,如果要想重新获取csr,可以停掉kubelet,删 ...

  4. Android开发 互相调用模式之提供扩展类

    此种方法适用于:比如你要让Android做一些事情,这些事用不到任何资源,在Android下用纯代码就能实现它,这样就可以在Android下写好,将它封装成一个方法,打成包按照下面的方式丢给Unity ...

  5. PJzhang:shell基础入门的2个疗程-two

    猫宁!!! 第6节:重定向 标准输入,标准输出,错误输出 输入重定向符号'<' 输出重定向符号'>'(清空之后再输入),'>>'(当前内容不变,在最后一行追加),'2>' ...

  6. Office之什么是高内聚低耦合

    ---恢复内容开始--- 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低. 粗劣的说就指的是:单独模块间有着强大的凝聚力,不同的模 ...

  7. 1137. N-th Tribonacci Number(Memory Usage: 13.9 MB, less than 100.00% of Python3)

    其实思路很简单,套用一下普通斐波那契数列的非递归做法即可,不过这个成绩我一定要纪念一下,哈哈哈哈哈 代码在这儿: class Solution: def tribonacci(self, n: int ...

  8. docker-compose 部署elk+解决时间不对导致kibana找不到logstash定义的index + docker-compose安装

    1.拉代码 git clone https://github.com/deviantony/docker-elk.git 2.docker-compose配置文件 [root@host7 docker ...

  9. Android Studio出现:Cause: unable to find valid certification path to requested target

    我的AS版本是3.4.1..出现这个问题是因为公司内网很奇葩,连上后必须访问一次网页.所以是AS连不上网络,访问不了https://bintray.com/bintray/jcenter导致的.

  10. Macaca环境搭建(三)----uirecorder Android录制

    一.安装Macaca-Android 命令窗口输入:npm i macaca-android -g 二.安装android-SDK 1.下载并安装ADT-bundle,官网下载地址我就不提供了,因为下 ...