2011-08-11 4 views

答えて

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

のように繰り返される数字を入れたいと思います。 @Michalによるコメントのように

あなたは連続しない数字をグループ化したい場合は、

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

素敵なトリック。このソリューションはどのように機能しますか?私は整数、浮動小数点、文字列のiterablesを意味するそれは大丈夫だと思います。自分のクラスオブジェクトのiterableについてはどうですか? __eq__または__hash__が実装されている場合、これらは機能しますか? – Bogdan

+1

同等であれば、それはうまくいくでしょう。実装に相当するコードは私の答えのリンクにあります。だから、 '__eq__'(そして' __hash__'も同じですが、同じオブジェクトが同じものをハッシュする必要があるため)を実装すればうまく動作します。 – agf

+3

このコードを動作させるには '__hash__'は必要ありませんが、オブジェクトを辞書とセットで効果的に使用できるように実装することをお勧めします。 –

関連する問題