言ってやるが、私は以下のようなリストを持っている:重複した連続するタプルをリストから削除しますか?
[(2, 1), (1, 0), (1, 0), (1,0), (2,1), (2, 1)]
私は重複連続したタプルを削除したいです。上記の例ではので、それは返す必要があります:
[(2, 1), (1, 0), (2, 1)]
言ってやるが、私は以下のようなリストを持っている:重複した連続するタプルをリストから削除しますか?
[(2, 1), (1, 0), (1, 0), (1,0), (2,1), (2, 1)]
私は重複連続したタプルを削除したいです。上記の例ではので、それは返す必要があります:
[(2, 1), (1, 0), (2, 1)]
itertools.groupby
を使用できます。
from itertools import groupby
x = [(2, 1), (1, 0), (1, 0), (1, 0), (2, 1), (2, 1)]
x_grouped = [i for i, j in groupby(x)]
# [(2, 1), (1, 0), (2, 1)]
は、あなただけの前の1に等しくない要素を生成するジェネレータを使用することができます。
def filter_consecutive_duplicates(it):
prev = object() # sentinel object, won't be equal to anything else
for elem in it:
if elem != prev:
yield elem
prev = elem
デモ:
>>> list(filter_consecutive_duplicates([(2, 1), (1, 0), (1, 0),(1,0),(2,1), (2, 1)]))
[(2, 1), (1, 0), (2, 1)]
a=[(2, 1), (1, 0), (1, 0), (1,0), (2,1), (2, 1)]
a=[elem for count,elem in enumerate(a) if elem!=a[count-1] or count==0]
このリストの理解はいかがですか
リスト内の連続するリピートのみ、またはすべての重複を削除したいですか? – James
@James:連続したリピートのみ – Fraz