私はどのようにして同等のアイテムをPythonリストにグループ化できますか?
x = [2, 2, 1, 1, 1, 1, 1, 1]
のようなリストを持っている私は、これはitertools.groupby
はですまさにです一緒に
[[2,2],[1,1,1,1,1,1]]
私はどのようにして同等のアイテムをPythonリストにグループ化できますか?
x = [2, 2, 1, 1, 1, 1, 1, 1]
のようなリストを持っている私は、これはitertools.groupby
はですまさにです一緒に
[[2,2],[1,1,1,1,1,1]]
[list(g) for k, g in itertools.groupby(iterable)]
のように繰り返される数字を入れたいと思います。 @Michalによるコメントのように
あなたは連続しない数字をグループ化したい場合は、
[list(g) for k, g in itertools.groupby(sorted(iterable))]
素敵なトリック。このソリューションはどのように機能しますか?私は整数、浮動小数点、文字列のiterablesを意味するそれは大丈夫だと思います。自分のクラスオブジェクトのiterableについてはどうですか? __eq__または__hash__が実装されている場合、これらは機能しますか? – Bogdan
同等であれば、それはうまくいくでしょう。実装に相当するコードは私の答えのリンクにあります。だから、 '__eq__'(そして' __hash__'も同じですが、同じオブジェクトが同じものをハッシュする必要があるため)を実装すればうまく動作します。 – agf
このコードを動作させるには '__hash__'は必要ありませんが、オブジェクトを辞書とセットで効果的に使用できるように実装することをお勧めします。 –
何 '[2,2,1,1,1,2,2]'は?それは '[2,2]、[1,1,1]、[2,2]]か[[2,2,2,2]、[1,1,1]]'であるべきですか? –