python之itertools
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的更多相关文章
- python 之 itertools模块
官方:https://yiyibooks.cn/xx/python_352/library/itertools.html 参考: https://blog.csdn.net/neweastsun/ar ...
- python基础=== itertools介绍(转载)
原文链接:http://python.jobbole.com/85321/ Python提供了一个非常棒的模块用于创建自定义的迭代器,这个模块就是 itertools.itertools 提供的工具相 ...
- Python中itertools.groupby分组的使用
Python中itertools.groupby分组的使用 有时候我们需要给一个列表按照某个属性分组,可以借助groupby来实现. 比如:一下列表我想以严重程度给它分组,并求出每组的元素个数. fr ...
- 【Python开发】Python:itertools模块
Python:itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器 ...
- python迭代器Itertools
https://docs.python.org/3.6/library/itertools.html 一无限迭代器: Iterator Arguments Results Example count( ...
- Python的itertools模块
本章将介绍Python自建模块itertools,更多内容请参考:Python参考指南 python的自建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertool ...
- Python:itertools库的使用
转于:https://blog.csdn.net/neweastsun/article/details/51965226 博主:neweastsun的专栏 介绍 itertools是python内置的 ...
- Python 模块 itertools
python 2.6 引入了itertools模块,使得排列组合的实现非常简单: import itertools 有序排列:e.g., 4个数内选2个排列: >>> print l ...
- Python中itertools模块
itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...
随机推荐
- SSH2配置
Ubuntu14.04配置openSSH-server时报错,很有可能是因为如下的报错原因 这个问题大概应该是你的/etc/apt/的源有问题,但大概可以这么解决:1.sudo apt-get pur ...
- 阶段3 3.SpringMVC·_06.异常处理及拦截器_5 SpringMVC拦截器之编写controller
先新建包,com.itcast.controller,然后把异常拦截的项目的UserController复制过来. 复制过来稍作修改 创建pages文件件,然后新建success.jsp页面 部署当前 ...
- datatable 用法
DataTable datainsert = dt.GetChanges(DataRowState.Added); DataTable datadelete = dt.GetChanges(DataR ...
- idea 错误: 找不到或无法加载主类 xxx.xxx.xxxxx
idea 错误: 找不到或无法加载主类 xxx.xxx.xxxxx JDK环境,maven项目还是ee还是web项目,是否都正常. 如果是用idea打开的话,在源码目录上点击右键,然后找到Mark d ...
- Django使用消息提示简单的弹出个对话框
1.下面就来介绍一下如何简单的显示一个消息提示,好像js可以控制,不过这里用了django.contrib.messages这个库 2.首先呢,在项目的settings.py有默认配置一个django ...
- jdk1.8-ArrayDeque
一:类的继承关系 UML图 类的继承关系: )))))) ]) & ()) == ) & ()) == ) & ()] = e) ) & (); return resu ...
- Centos7下yum安装kubernetes
一.前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上 ...
- Foxmail:导入联系人
打开“Foxmail”之后,如下图所示: 接下来,在左下角找到箭头指示的位置处,点击此处: 接下来,在邮箱的右上角找到如图所示的位置,鼠标点击此处: 点击之后,如下图所示,找到“导入”: 点击“导入& ...
- 【神经网络与深度学习】什么是HDF
什么是HDF HDF 是用于存储和分发科学数据的一种自我描述.多对象文件格式.HDF 是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要.HDF 可以表示出 ...
- layer ajax请求
layer ajax请求 $.ajax({ // url: '../php/creatSceneXml.php', url: '../php/action.php', type: 'POST', da ...