- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何成对迭代 groupby
结果?我尝试的方法不太奏效:
from itertools import groupby,izip
groups = groupby([(1,2,3),(1,2),(1,2),(3,4,5),(3,4)],key=len)
def grouped(iterable, n):
return izip(*[iterable]*n)
for g, gg in grouped(groups,2):
print list(g[1]), list(gg[1])
我得到的输出:
[] [(1, 2), (1, 2)]
[] [(3, 4)]
我想要的输出:
[(1, 2, 3)] [(1, 2), (1, 2)]
[(3, 4, 5)] [(3, 4)]
最佳答案
import itertools as IT
groups = IT.groupby([(1,2,3),(1,2),(1,2),(3,4,5),(3,4)], key=len)
groups = (list(group) for key, group in groups)
def grouped(iterable, n):
return IT.izip(*[iterable]*n)
for p1, p2 in grouped(groups, 2):
print p1, p2
产量
[(1, 2, 3)] [(1, 2), (1, 2)]
[(3, 4, 5)] [(3, 4)]
您发布的代码非常有趣。它有一个普通的问题,也有一个微妙的问题。
普通的问题是 itertools.groupby 返回一个迭代器,它在每次迭代时输出一个键和一个组。由于您只对组感兴趣,而不对键感兴趣,因此您需要类似的东西
groups = (group for key, group in groups)
这个微妙的问题更难解释——我不确定我是否完全理解它。这是我的猜测:groupby
返回的迭代器已经转换了它的输入,
[(1,2,3),(1,2),(1,2),(3,4,5),(3,4)]
变成一个迭代器。 groupby 迭代器环绕底层数据迭代器类似于 csv.reader
环绕底层文件对象迭代器的方式。您将通过此迭代器一次,并且仅一次。 itertools.izip 函数在 groups
中配对项的过程中,导致 groups
迭代器从第一项前进到第二项。由于您只通过迭代器一次,第一个项目已被消耗,因此当您调用 list(g[1])
时它是空的。
解决此问题的
不太令人满意
是将组
中的迭代器转换为列表:
groups = (list(group) for key, group in groups)
因此 itertools.izip
不会过早地使用它们。编辑:转念一想,这个修复还不错。 groups
仍然是一个迭代器,并且仅在使用时将 group
转换为列表。
关于python - itertools.groupby : iterate over groups pairwise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875714/
我手头有一道算法题。为了容易解释这个问题,我将使用一个简单的类比。我有一个输入文件 Country,Exports Austrailia,Sheep US, Apple Austrialia,Beef
我正在尝试为垂直和水平滚动方向创建两个可观察的滚动事件。 我尝试使用 pairwise() 和 bufferCount(2,1) 运算符从水平滚动事件中过滤垂直滚动事件,但问题是获取重复值prev.s
我有一个类似于 itertools 的 pairwise 配方的生成器,它生成 (s0,s1), (s1,s2), (s2, s3)...。我想从中创建另一个生成器,生成原始序列 s0, s1, s2
itertools 的文档提供了一个 recipe对于 pairwise() 函数,我在下面稍作修改,使其返回 (last_item, None) 作为最后一对: from itertools imp
在我博士期间的一个副业项目中,我参与了用 Python 对一些系统进行建模的任务。在效率方面,我的程序在以下问题中遇到了瓶颈,我将在一个最小工作示例中公开该问题。 我处理大量由 3D 起点和终点编码的
这是测试的正常输出: attach(airquality) pw <- pairwise.wilcox.test(Ozone, Month, p.adj = "bonf") pw data: Ozo
我有一个二进制字符串,其中字节按以下方式反转:该文件包含例如四个字节0x18 0xb1 0x35 0x41,应解释为0xb1 0x18 0x41 0x35 code> 到我的 Perl 字符串或数组中
我有一个二进制字符串,其中字节按以下方式反转:该文件包含例如四个字节0x18 0xb1 0x35 0x41,应解释为0xb1 0x18 0x41 0x35 code> 到我的 Perl 字符串或数组中
如何成对迭代 groupby 结果?我尝试的方法不太奏效: from itertools import groupby,izip groups = groupby([(1,2,3),(1,2),(1,
所以我正在尝试做一个成对表并保留每对的 p 值。请注意,我仍然是 R 的初学者。我的数据看起来像这样(虽然大得多): a % gather(.,key="variable",value="value
将 pysal 导入为 ps 我正在尝试导入 pysal,但我得到以下信息: 无法从“sklearn.metrics.pairwise”导入名称“haversine_distances” 所以我尝试了
我使用 XGBoost 的 python 实现。目标之一是rank:pairwise并且最小化成对损失( Documentation )。但是,它没有说明输出的范围。我看到 -10 到 10 之间的数
我想用一个简单(但糟糕)的数据集做一个简单的成对 wilcox 测试。我有 8 个组,每个组有 5 个值(见下面的数据)。这些组位于“id”列中,感兴趣的变量(在本例中为权重)位于“weight”中。
假设我有一个像这样的矩阵: [[5.05537647 4.96643654 4.88792309 4.48089566 4.4469417 3.7841264] [4.81800568 4.7552
我已经进行了一系列成对比较(准确地说是 241 x 241)。 生成的文件如下所示: A,X,10 A,Y,20 X,Y,15 我想将其转换为一个表格,显示所有成对比较。 IE。像这样的东西 ,A,X
我正在使用 sklearn 的成对距离函数,它在计算巨大矩阵时救了我的命,但我遇到的问题是我丢失了索引。具体来说,我最初有一个 17000 x 300 的巨大数据帧,我根据某些类条件将其分解为 4 个
我正在做一些行为分析,我会随着时间的推移跟踪行为,然后创建这些行为的 n-gram。 sample_n_gram_list = [['scratch', 'scratch', 'scratch', '
我有一个如下所示的数据框: id name 0 12 molly 1 12 james 2 10 adam 3 8 susa
我有一个名为“df”的数据框,如下所示: ID Value 1 a 1 b 1 c 1 d 3 a 3 b 3 e 3 f . . . . . . 我有一
n = int(input()) a = [int(x) for x in input().split()] product = 0 for i in range(n): for j in ran
我是一名优秀的程序员,十分优秀!