/ / Duplikate und ähnliche Werte aus einer Liste in Python entfernen? - Python

Entfernen Sie doppelte und ähnliche Werte aus einer Liste in Python? - Python

Diese Frage ist eine Fortsetzung Wie entfernen Sie Dubletten aus einer Liste, während Sie die Reihenfolge beibehalten?.

Ich muss Duplikate und ähnliche Werte aus einer Liste entfernen:

Ich gehe von dieser Frage aus und bewerbe mich:

def f7(seq):
seen = set()
seen_add = seen.add
return [ x for x in seq if x not in seen and not seen_add(x)]

aber wenn ich es auf mein data / array: anwende, bekomme ich das, was eindeutig falsch ist, weil die fettgedruckten Werte gleich sind und eines entfernt werden sollte

 [(Decimal("1.20149"), Decimal("1.25900")),
*(Decimal("1.13583"), Decimal("1.07862"))*,
**(Decimal("1.07016"), Decimal("1.17773"))**,
*(Decimal("1.13582"), Decimal("1.07863"))*,
(Decimal("1.07375"), Decimal("0.92410")),
(Decimal("1.01167"), Decimal("1.00900")),
**(Decimal("1.07015"), Decimal("1.17773"))**,
(Decimal("0.95318"), Decimal("1.10171")),
(Decimal("1.01507"), Decimal("0.79170")),
(Decimal("0.95638"), Decimal("0.86445")),
(Decimal("0.90109"), Decimal("0.94387")),
(Decimal("0.84900"), Decimal("1.03060"))]

Wie würden Sie diese Werte entfernen, die identisch sind?

Antworten:

3 für die Antwort № 1

Von der Ausgabe sieht es aus wie die seq Sie übergeben 2-Tupel. Während die Werte Innerhalb Die Tupel können die gleichen sein, die Tupel selbst (welche die Elemente Ihrer Sequenz sind) sind nicht und werden daher nicht entfernt.

Wenn Sie eine flache Liste der eindeutigen Zahlen erhalten möchten, können Sie diese zuerst reduzieren:

seq = [ (1,2), (2,3), (1,4) ]
f7(itertools.chain(*seq))
=> [1, 2, 3, 4]