如何在Python列表中将等效项组合在一起?

gra*_*aph 8 python list

我有一个清单

x = [2, 2, 1, 1, 1, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

我想把重复的数字放在一起像

[[2,2],[1,1,1,1,1,1]] 
Run Code Online (Sandbox Code Playgroud)

agf*_*agf 26

[list(g) for k, g in itertools.groupby(iterable)]
Run Code Online (Sandbox Code Playgroud)

这正是itertools.groupby为了什么.

如果你想要非连续的数字分组,比如@Michal的评论,

[list(g) for k, g in itertools.groupby(sorted(iterable))]
Run Code Online (Sandbox Code Playgroud)

  • 你不需要`__hash__`来使这个代码工作,但是实现它是个好主意,这样你的对象就可以在dicts和sets中有效地使用. (3认同)