【发布时间】:2011-08-30 12:16:20
【问题描述】:
我有一个类似的列表
x = [2, 2, 1, 1, 1, 1, 1, 1]
我想把重复的数字放在一起
[[2,2],[1,1,1,1,1,1]]
【问题讨论】:
-
[2,2,1,1,1,2,2]怎么样?应该是[[2,2],[1,1,1],[2,2]]还是[[2,2,2,2],[1,1,1]]?
我有一个类似的列表
x = [2, 2, 1, 1, 1, 1, 1, 1]
我想把重复的数字放在一起
[[2,2],[1,1,1,1,1,1]]
【问题讨论】:
[2,2,1,1,1,2,2] 怎么样?应该是[[2,2],[1,1,1],[2,2]] 还是[[2,2,2,2],[1,1,1]]?
[list(g) for k, g in itertools.groupby(iterable)]
这正是itertools.groupby 的用途。
如果您想对不连续的数字进行分组,例如@Michal 的评论,
[list(g) for k, g in itertools.groupby(sorted(iterable))]
【讨论】:
__eq__(还有__hash__,因为相等的对象需要散列相同),它就会起作用。
__hash__ 只是为了让这段代码工作,但最好实现它,以便你的对象可以在字典和集合中有效地使用。