0

連続するすべての等しい要素をリストから削除する方法は?

例えば:

[1, 1, 2, 3, 2, 2, 4, 4, 5]

なるべき[1, 2, 3, 2, 4, 5]

old = [1, 1, 2, 3, 2, 2, 4, 4, 5]
result = []
for e in old:
   if len(result) == 0 or result[-1] != e:
       result.append(e)

私はこのようにすることができますが、Pythonでより短い方法はありますか?

4

1 に答える 1

6

itertools繰り返し項目をグループ化する機能がありますgroupby

import itertools

[item for item, repeats in itertools.groupby([1, 1, 2, 3, 2, 2, 4, 4, 5])]
#>>> [1, 2, 3, 2, 4, 5]

repeatsセクションを返す iterable です。すべてのrepeatss をくっつけると、元の iterable が返されます。

于 2013-09-21T21:20:20.253 に答える