0

リストのスマートプリントが必要です。例えば:

a=[2,2,2,1,1,1,1,1,1,1]

次のような印刷結果が必要です。2*3, 1*7

好きじゃない:2,2,2,1,1,1,1,1,1

4

3 に答える 3

4

collections.Counter順序が重要でない場合は、次を使用できます。

>>> from collections import Counter
>>> a = [2,2,2,1,1,1,1,1,1,1]
>>> ",".join(("%s*%s" % (item, count) for item, count in Counter(a).iteritems()))
'1*7,2*3'
于 2013-08-22T06:54:26.607 に答える
1

単純な RLE (ランレングス エンコーディング) が必要な場合は、次のようにできます。

from itertools import groupby
return [(k, sum(1 for _ in g)) for k, g in groupby(a)]

タプルのリストを取得します。各タプルの最初の項目は元の配列の番号で、2 番目の項目はグループの長さです。

于 2013-08-22T06:59:05.673 に答える