2011-08-11 24 views

回答

26
[list(g) for k, g in itertools.groupby(iterable)] 

這正是itertools.groupby是。

如果你想不連續的號碼由@Michal註釋分組一樣,

[list(g) for k, g in itertools.groupby(sorted(iterable))] 
+0

好戲。該解決方案適用於什麼?我的意思是整數,浮點數,字符串,我猜這是可以的。你自己的類對象的迭代如何?如果__eq__或__hash__被實現,它們會工作嗎? – Bogdan

+1

只要它們相等就可以工作;相當於實現的代碼在我的答案中。所以,只需實現'__eq__'(以及'__hash__',因爲相同的對象需要散列相同)並且它將工作。 – agf

+3

你不需要'__hash__'來使這個代碼正常工作,但是實現它是一個好主意,這樣你的對象就可以在字典和集合中被有效地使用。 –

相關問題