使用itertools按第二个值分组连续元组

2 投票
3 回答
1891 浏览
提问于 2025-04-17 22:35

我有一组数据,格式如下:

X1 = [(1,1),(3,1),(5,0),(3,0),(2,1)]

我不知道怎么把它们分组,要求是:

X2 = [[(1,1),(3,1)],[(5,0),(3,0)],[(2,1)]]

也就是说,它们要根据每个元组中的第二个值连续地分在一起。

我知道这和这个有关:

http://docs.python.org/2/library/itertools.html#itertools.groupby

3 个回答

-2

在编程中,有时候我们需要处理一些数据,可能会用到数组。数组就像一个盒子,里面可以放很多东西,比如数字、字母等。我们可以通过索引来访问这些东西,索引就像是盒子里的标签,告诉我们每个东西放在哪里。

有些时候,我们想要把数组里的某些东西取出来,或者把新的东西放进去。这个过程就叫做“操作数组”。操作数组的方法有很多,比如添加、删除或者修改里面的内容。

在编程中,了解如何操作数组是非常重要的,因为很多时候我们需要用数组来存储和管理数据。掌握这些基本的操作,可以帮助我们更好地处理信息。

x = [(1,1),(3,1),(5,0),(3,0),(2,1)]
y = [x[n:n+2] for n in range(0, len(x), 2)]
print(y)
0
from itertools import groupby, imap
from operator  import itemgetter

X1 = [(1,1),(3,1),(5,0),(3,0),(2,1)]
print map(list, imap(itemgetter(1), groupby(X1, itemgetter(1))))
# -> [[(1, 1), (3, 1)], [(5, 0), (3, 0)], [(2, 1)]]

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

5
from itertools import groupby
from operator import itemgetter
X2 = [list(group) for key, group in groupby(X1, itemgetter(1))]

groupby 函数传一个 key 函数,这个函数用来获取每个元组的第二个元素。这样,groupby 就会根据这些第二个元素来对元组进行分组。

撰写回答