I have a list like
x = [2, 2, 1, 1, 1, 1, 1, 1]
我想把重复的数字放在一起,就像这样:
[[2,2],[1,1,1,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__
,因为相等的对象需要散列相同),它就能工作。 - agf__hash__
,但是最好还是要实现它,这样你的对象可以在字典和集合中被有效使用。 - Ned Batchelder
[2,2,1,1,1,2,2]
怎么处理?应该是[[2,2],[1,1,1],[2,2]]
还是[[2,2,2,2],[1,1,1]]
? - Michał Bentkowski