9

これはおそらく簡単な答えだと思いますが、わかりません。重複をリストに保持するためのPythonでの最良の方法は何ですか:

x = [1,2,2,2,3,4,5,6,6,7]

出力は次のようになります。

[2,6]

私はこのリンクを見つけました: Find (and keep) duplicates of sublist in python、しかし私はまだPythonに比較的慣れていないため、単純なリストで機能させることができません。

4

4 に答える 4

16

私は使用しますcollections.Counter

from collections import Counter
x = [1, 2, 2, 2, 3, 4, 5, 6, 6, 7]
counts = Counter(x)
output = [value for value, count in counts.items() if count > 1]

これは、アイテムが最初に複製されたときの順序を保持する別のバージョンです。これは、渡されたシーケンスにハッシュ可能なアイテムが含まれていることのみを前提としており、言語が導入された時期setまたはyeild言語に導入されたとき (いつでも) に戻ります。

def keep_dupes(iterable):
    seen = set()
    dupes = set()
    for x in iterable:
        if x in seen and x not in dupes:
            yield x
            dupes.add(x)
        else:
            seen.add(x)

print list(keep_dupes([1,2,2,2,3,4,5,6,6,7]))
于 2013-04-04T13:27:53.383 に答える
0

シンプルに保つ:

array2 = []
aux = 0
aux2=0
for i in x:
    aux2 = i
    if(aux2==aux):
        array2.append(i)
    aux= i
list(set(array2))

それはうまくいくはずです

于 2013-04-04T13:34:08.390 に答える