Goulib.itertools2模块

添加到itertools软件标准库

Goulib.itertools2。身份(x个)[来源]

不执行任何操作并返回未修改的变量

Goulib.工具2。可访问的(对象)[来源]
结果:如果obj是可迭代的(但不是字符串),则为bool True
Goulib.itertools2。可转让的(如果)[来源]
Goulib.itertools2。任何(序列号,pred=<类'bool'>)[来源]
结果:bool如果iterable中的至少一个元素的pred(x)为True,则为True
Goulib.itertools2。全部的(序列号,pred=<类'bool'>)[来源]
结果:如果pred(x)对于iterable中的所有元素都为True,则bool为True
Goulib.itertools2。(序列号,pred=<类'bool'>)[来源]
结果:bool如果iterable中的每个元素的pred(x)都为False,则为True
Goulib.itertools2。指数(价值,可迭代的)[来源]
结果:可迭代值的整数索引
Goulib.itertools2。第一(可迭代的)[来源]
结果:iterable中的第一个元素
Goulib.itertools2。最后的(可迭代的)[来源]
结果:iterable中的最后一个元素
Goulib.itertools2。每一个人(n个,可迭代的,开始=0)[来源]

从迭代器中每n个元素取一个元素

Goulib.itertools2。每一个(n个,可迭代的,开始=0)

从迭代器中每n个元素取一个元素

Goulib.工具2。(n个,可迭代的)[来源]
结果:iterable中的前n项
Goulib.itertools2。(n个,可迭代的)[来源]

从iterable中删除n个元素并返回其余的

Goulib.itertools2。枚举(可迭代的)[来源]

将枚举推广到dicts:result:key,任何可迭代类型的值对

Goulib.itertools2。伊伦()[来源]
结果:耗尽迭代器的int长度
Goulib.itertools2。愤怒(开始或结束,optional_end=无)[来源]
结果:从开始到结束计数的iterable(包括两者)。
Goulib.itertools2。阿兰奇(开始,stop=无,步骤=1)[来源]

浮点或其他类型的范围(numpy.arange公司没有numpy)

参数:
  • 开始–可选编号。间隔的开始。间隔包括该值。默认开始值为0。
  • 停止–数字。间隔结束。间隔不包括此值,除非在某些情况下步长不是整数并且浮点舍入会影响out的长度。
  • –可选编号。值之间的间距。对于任何输出out,这是两个相邻值out[i+1]-out[i]之间的距离。默认步长为1。
结果:

迭代器

Goulib.itertools2。林斯空间(开始,结束,n=100)[来源]

n个值上的迭代器,在开始和结束之间(包括开始和结束)进行线性插值numpy.linspace(空)没有numpy

参数:
  • 开始–数字或可迭代向量
  • 结束–数字或可迭代向量
  • n个–int个插值数
结果:

迭代器

Goulib.itertools2。压扁(,donotrecuresin=(<类“str”>,))[来源]

迭代器用于展平(深度优先)结构

参数:
  • –可迭代结构
  • 不安全–algo不递归的可迭代类型默认为字符串类型
Goulib.itertools2。项目收集器(可迭代的,)[来源]
Goulib.itertools2。递归(如果,x个)[来源]
Goulib.itertools2。互换(可迭代的)[来源]
Goulib.itertools2。球座(可迭代的,n=2,copy=无)[来源]

发球台或副本取决于类型和目标

参数:
  • 可迭代的–任何可迭代的
  • n个–要返回的T形三通/副本数为int
  • 复制–可选的复制功能,例如copy.copy或copy.deepcopy
结果:

iterable的tee,如果它是迭代器或生成器,或者是其他类型的(深层)副本

此函数有助于以较低的内存成本避免副作用视情况而定

Goulib.itertools2。(可迭代的,n个,步骤=无)[来源]

从可迭代前进生成“n”个元素组每个迭代中的“step”元素

Goulib.itertools2。成对地(可迭代的,op=无,loop=错误)[来源]

遍历连续对

参数:
  • 可迭代的–输入可迭代的s1、s2、s3…。
  • 操作–适用于每对的可选运算符
  • –boolean True,如果最后一对应该是(sn,s1)以关闭循环
结果:

对迭代器(s1,s2),(s2,s3)…(si,si+1),…(sn-1,sn)+可选对以关闭循环

Goulib.itertools2。选择(它1,它2,操作)[来源]
Goulib.itertools2。形状(可迭代的)[来源]

无numpy的多维数组的形状

参数:可迭代的–iterable of iterable…of iterale或numpy数组…
结果:与每个维度的iterable长度相对应的n个int的列表
警告:如果iterable不是(超)矩形矩阵,则从

[0,0,…0]元素…:参见:http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.narray.shape.html

Goulib.itertools2。ndim公司(可迭代的)[来源]

多维数组的维数,无numpy

参数:可迭代的–iterable of iterable…of iterale或numpy数组…
结果:int维数
Goulib.itertools2。重塑(数据,暗度)[来源]
结果:数据作为n-dim矩阵
Goulib.工具2。组成(如果,)[来源]

组合两个函数->组合(f,g)(x)->f(g(x))

Goulib.工具2。迭代(函数,参数)[来源]

在Haskell的iterate之后:重复应用函数。

Goulib.itertools2。积累(可迭代的,func=<内置函数add>,skip_first=假)[来源]

返回运行总计。延伸蟒蛇.积累

#累积([1,2,3,4,5])–>1 3 6 10 15#累加([1,2,3,4,5],运算符.mul)–>1 2 6 24 120

Goulib.itertools2。记录(可迭代的,it=计数(0),最大值=0)[来源]

返回超过前面最大值的iterable的索引和值

Goulib.itertools2。记录索引(可迭代的,it=计数(0),最大值=0)[来源]
Goulib.itertools2。记录值(可迭代的,it=计数(0),最大值=0)[来源]
Goulib.itertools2。尾部(序列号)[来源]

获取序列的尾部

尾部([1,2,3])->[1,2,4],[2,3],[3],[]。

Goulib.itertools2。减少(函数,可迭代的,init=无)[来源]

喜欢蟒蛇.reduce但使用迭代器(也称为scanl)

Goulib.工具2。事件(可迭代的)[来源]

计算有限迭代中每个项的出现次数

参数:可迭代的–有限可迭代
退货:按项索引的int计数的dict
Goulib.itertools2。压缩(可迭代的,键=<功能标识>,缓冲区=无)[来源]

通过计算iterable中连续项的数量来生成(item,count)对

参数:
  • 可迭代的–可迭代,可能无限
  • 钥匙–定义哪些元素被视为相等的可选函数
  • 缓冲器–可选整数。如果定义了iterable,则使用此缓冲区对iterable进行排序
Goulib.itertools2。独特的(可迭代的,键=无,缓冲区=100)[来源]

生成独特的元素,保持顺序。:param iterable:可迭代,可能无限:param key:定义哪些元素被视为相等的可选函数:param buffer:可选整数,定义要在内存中保留的最后唯一元素的数量如果iterable是无限的,则是必需的

#独特('AAABBBCCDAABB')–>A B C D#独特('ABBCcAD',str.lower)–>A B C D

Goulib.itertools2。count_unique(唯一)(可迭代的,键=无)[来源]

计算唯一元素

#count_unique('AAABBBCCDAABBB')–>4#count_unique('ABBCcAD',str.lower)–>4

Goulib.itertools2。组合_with_replacement(可迭代的,第页)[来源]

组合_with_replacement('ABC',2)–>AA AB AC BB BC CC与combinations_with_replacement相同,只是它不生成重复

Goulib.itertools2。塔克恩(n个,可迭代的,默认值=无)[来源]
结果:可迭代的第n项
Goulib.itertools2。第n个(n个,可迭代的,默认值=无)
结果:可迭代的第n项
Goulib.itertools2。微型计算机(*序列)[来源]

序列的笛卡尔积(递归版本)

Goulib.itertools2。量化(可迭代的,pred=<类'bool'>)[来源]
结果:int计数谓词为true的次数
Goulib.itertools2。交错(l1级,第二语言)[来源]
参数:
  • l1级–可迭代
  • 第二语言–长度相同的可迭代,或小于l1的1
结果:

从l1[0]开始的l1和l2的可迭代交错元素

Goulib.itertools2。洗牌(ary系列)[来源]
参数:使用Fisher-Yates算法进行洗牌的数组
结果:洗牌数组(就位!)
请参见:http://www.drgoulu.com/2013/01/19/comment-bien-brasser-les-cartes/
Goulib.itertools2。兰特(seq)(大小)[来源]
结果:范围(大小)被打乱
Goulib.itertools2。所有路径(_pa)(大小)[来源]

从0大小为i,j生成所有i,j对

Goulib.itertools2。索引最小值(,键=<功能标识>)[来源]
结果:最小索引,最小值
Goulib.itertools2。索引最大值(,键=<功能标识>)[来源]
结果:最大索引,最大值
Goulib.itertools2。最好的(可迭代的,键=无,n=1,反向=假)[来源]

生成与密钥排序顺序的n个最佳值相对应的项

Goulib.itertools2。排序索引(_I)(可迭代的,键=<功能标识>,反向=假)[来源]
退货:迭代器覆盖对应于排序迭代器的迭代器索引
Goulib.itertools2。过滤器2(可迭代的,条件)[来源]

喜欢蟒蛇过滤器但返回2个列表:-满足条件的iterable元素列表-不需要的列表

Goulib.itertools2。ifind(如果发现)(可迭代的,如果,反向=假)[来源]

迭代可迭代中的项,其中f(item)==True。

Goulib.itertools2。iremove公司(可迭代的,如果)[来源]

基于条件从可迭代中删除项:param iterable:iterable。将就地修改:param f:lambda行形式的函数:如果应删除项,则bool返回True:yield:向后删除项

Goulib.itertools2。移除(可迭代的,如果)[来源]

基于条件从可迭代中删除项:param iterable:iterable。将就地修改:param f:lambda行形式的函数:如果应删除项,则bool返回True:result:已删除项的列表。

Goulib.itertools2。找到(可迭代的,如果)[来源]

返回iterable中的第一项,其中f(item)==True。

Goulib.itertools2。isplit公司(可迭代的,九月,include_sep=错误)[来源]

按分隔符或条件拆分可迭代:param sep:value或function(item)为分隔的项返回True:param include_sep:bool。如果为True,则在每个子迭代器的开头,在输出中包含分隔符项:result:遍历分隔符之前、之间和之后的切片

Goulib.itertools2。分裂(可迭代的,九月,include_sep=错误)[来源]

喜欢https://docs.python.org/2/library/stdtypes.html#str.split,但对于可迭代:param sep:value或function(item)为分隔的项返回True:param include_sep:bool。如果为True,则在每个子迭代器的开头,在输出中包含分隔符项:result:分隔符之前、之间和之后的可迭代切片列表

Goulib.itertools2。口述分裂(dic公司,钥匙)[来源]

从dic中提取密钥:param dic:dict源:param keys:dict键的可迭代:result:dict,dict:第一个包含源中存在的条目,第二个包含其余条目

Goulib.itertools2。下一个permutation(序列号,pred=<函数<λ>>)[来源]

与C++std::next_pervariation()类似,但实现为生成器。看见http://blog.bjrn.se/2008/04/lechographic-pervariations-using.html:param seq:可迭代:param pred:如果a<b,则返回负数的函数(a,b),如Python 2.7中的cmp(a,b)

Goulib.itertools2。iter2(可迭代的)[来源]

基础:对象

接受一个可迭代的对象。http://code.activestate.com/recipes/578092-flattening-an-arbitrarily-dep-list-or-any-iterato/允许以下方法调用(无论如何都应该内置到迭代器中…)电话:-append-将另一个iterable附加到迭代器上。-insert-只接受在0处插入,在其他迭代器之前插入一个迭代器。-正在添加。iter2对象可以添加到另一个可迭代。即iter2+iter(不是iter+iter2)。最好将所有对象设置为iter2对象,以避免语法错误D类

__初始化__(可迭代的)[来源]

初始化自身。有关准确的签名,请参阅帮助(键入(self))。

追加(可迭代的)[来源]
插入(地方,可迭代的)[来源]
__添加__(可迭代的)[来源]
__下一个__()[来源]
下一个()
__iter公司__()[来源]
__类别__

的别名内置类型

__延迟器__

实现delattr(self,name)。

__目录__()列表

默认dir()实现

__等式__

返回self==值。

__格式__()

默认对象格式化程序

__通用电气公司__

返回self>=值。

__获取属性__

返回getattr(self,name)。

__gt公司__

返回self>值。

__散列__

返回散列(self)。

__勒__

返回self<=值。

__它__

返回self<value。

__无__

回归自我=值。

__新__()

创建并返回新对象。请参阅帮助(键入)以获取准确的签名。

__减少__()

泡菜助手

__reduce_ex(还原_ex)__()

泡菜助手

__代表__

退货代表(本人)。

__设置属性__

实现setattr(self、name、value)。

__大小__()整数

内存中对象的大小,以字节为单位

__字符串__

返回str(self)。

Goulib.工具2。分区(d日,钥匙)[来源]

摘录“子字典”:参数d:dict:param keys:要提取的密钥的容器::result:字典::参见:http://stackoverflow.com/questions/5352546/best-way-to-extract-subset-of-key-value-pairs-from-python-dictionary-object/5352649#5352649

例外Goulib.itertools2。排序错误[来源]

基础:例外情况

__原因__

异常原因

__类别__

的别名内置类型

__上下文__

异常上下文

__特拉特__

实现delattr(self,name)。

__目录__()列表

默认dir()实现

__等式__

返回self==值。

__格式__()

默认对象格式化程序

__通用电气公司__

返回self>=值。

__获取属性__

返回getattr(self,name)。

__gt公司__

返回self>值。

__散列__

返回散列(self)。

__初始化__

初始化自身。有关准确的签名,请参阅帮助(键入(self))。

__勒__

返回self<=值。

__它__

返回self<value。

__无__

回归自我=值。

__新__()

创建并返回新对象。请参阅帮助(键入)以获取准确的签名。

__减少__()

泡菜助手

__reduce_ex(还原_ex)__()

泡菜助手

__代表__

退货代表(本人)。

__设置属性__

实现setattr(self、name、value)。

__设置状态__()
__大小__()整数

内存中对象的大小(字节)

__字符串__

返回str(self)。

__抑制上下文__
__追溯__
参数
带回溯(_T)()

异常.with_traceback(tb)–设置自己__追溯到tb并返回self。

Goulib.itertools2。确保已排序(可迭代的,键=无)[来源]

确保iterable根据键排序

产量:iterable项
提升:排序错误(如果不是)
Goulib.itertools2。可排序(可迭代的,键=无,缓冲=100)[来源]

对“几乎排序”(无限)的可迭代对象进行排序

参数:
  • 可迭代的–可迭代
  • 钥匙–用作排序键的功能
  • 缓冲器–缓冲区的int大小。要交换的元素不应超过此值
Goulib.itertools2。差异(可迭代1,可迭代2)[来源]

在排序iterable1中生成不在排序iteriable2中的项

Goulib.itertools2。横断(*可迭代的)[来源]

生成N个迭代的itersection

参数:可迭代的–任意数量的SORTED迭代
产量:属于所有可迭代项的元素
请参见:http://stackoverflow.com/questions/969709/joining-a-set-of-ordered-integer-yielding-python-iterator
Goulib.itertools2。产品(*可迭代的,**夸格斯)[来源]

(无限)输入迭代器的笛卡尔积。

参数:
  • 可迭代的–任意数量的可迭代项
  • 重复–整数可选重复次数
请参见:

http://stackoverflow.com/questions/12093364/cartesian-product-of-large-iterators-intertools

Goulib.itertools2。保持(可迭代的)[来源]

基础:集合.abc。迭代器

保留最后一个值的迭代器

__初始化__(可迭代的)[来源]

初始化自身。有关准确的签名,请参阅帮助(键入(self))。

__下一个__()[来源]

从迭代器返回下一项。用完后,引发StopIteration

下一个()

返回迭代器中的下一个项。用完后,引发StopIteration

__抽象方法__=冻结集()
__类别__

的别名美国广播公司。ABC梅塔

__特拉特__

实现delattr(self,name)。

__目录__()列表

默认dir()实现

__等式__

返回self==值。

__格式__()

默认对象格式化程序

__通用电气公司__

返回self>=值。

__获取属性__

返回getattr(self,name)。

__gt公司__

返回self>值。

__散列__

返回散列(self)。

__iter公司__()
__勒__

返回self<=值。

__它__

返回self<value。

__无__

回归自我=值。

__新__()

创建并返回新对象。请参阅帮助(键入)以获取准确的签名。

__减少__()

泡菜助手

__reduce_ex(还原_ex)__()

泡菜助手

__代表__

退货代表(本人)。

__设置属性__

实现setattr(self、name、value)。

__大小__()整数

内存中对象的大小(字节)

__插槽__= ()
__字符串__

返回str(self)。

Goulib.itertools2。第一个匹配(_M)(iter1型,iter2,limit=无)[来源]

:param limit:int最大循环数:return:integer i第一个索引,其中iter1[i]==iter2[i]

Goulib.itertools2。弗洛伊德(可迭代的,限制=1000000.0)[来源]

使用Floyd“折磨hand-hare”算法检测可迭代循环

请参见:

https://en.wikipedia.org/wiki/Cycle_detection#Floyd's_乌龟和_哈雷

参数:
  • 可迭代的–可迭代
  • 限制–int limit以防止无限循环。无限制
结果:

(i,l)整数元组,其中i=循环开始索引,l=长度如果未找到循环,则返回(None,None)

Goulib.itertools2。布伦特(可迭代的,限制=1000000.0)[来源]

使用Floyd“折磨hand-hare”算法检测可迭代循环

请参见:

https://en.wikipedia.org/wiki/Cycle_detection#布伦特's_算法

参数:
  • 可迭代的–可迭代
  • 限制–int限制,以防止无限循环。无限制
结果:

(i,l)整数元组,其中i=循环开始索引,l=长度如果未找到循环,则返回(None,None)

Goulib.itertools2。检测周期(可迭代的,限制=1000000.0)[来源]