使用itertools按第二个值分组连续元组
我有一组数据,格式如下:
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
就会根据这些第二个元素来对元组进行分组。