Fehlende Zahlen in einer Liste suchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
16_Bit
User
Beiträge: 21
Registriert: Donnerstag 26. März 2020, 14:14

Hallo,

was ist eurer Meinung nach der cleverste Weg Lücken in einer Zahlenreihe zu finden?

Code: Alles auswählen

zahlenreihe = [305, 306, 308, 310, ... , 476]
Ich habe es jetzt so gelöst. mit min(zahlenreihe) und max(zahlenreihe) ermittle ich die kleinste und größte Zahl. Damit erstelle ich per range() eine Vergleichszahlenreihe und erstelle ein set() daraus. Aus zahlenreihe mache ich ebenfalls ein set().

Danach kann ich die Sets einfach vergleichen

Code: Alles auswählen

unterschiede = vergleichs_set.difference(zahlenreihe_set)
Statt mit einem set() zu arbeiten könnte man auch eine for - Schleife bauen, die die Vergleichszahlenreihe durchläuft. Bei jedem Durchlauf könnte dann geprüft werden, ob die aktuelle Zahl in zahlenreihe enthalten ist. Das dauert aber glaube ich länger als mit einem Set zu arbeiten.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Sets sind doch in Ordnung. Damit erkennt man aber natürlich nicht, ob am Anfang oder Ende eine Zahl fehlt.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@16_Bit: Die Zahlen sind aber anders als im Beispiel nicht aufsteigend sortiert, oder? Denn wären sie dass, wäre `min()`/`max()` nicht sinnvoll, denn das wäre dann ja einfach das erste und letzte Element.

Im Fall das die Zahlen nicht sortiert sind, würde ich daraus ein `set()` machen und das in einer „list comprehension“ nutzen um mit `range()` alle durchzugehen und nur die zu behalten die nicht in dem `set()` sind.

Sollten sie sortiert sein, wäre ein lineares durchgehen um die Lücken zu finden zumindest von der Laufzeitkomplexität günstiger als die Differenz mit Mengen zu bilden.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
16_Bit
User
Beiträge: 21
Registriert: Donnerstag 26. März 2020, 14:14

__blackjack__ hat geschrieben: Mittwoch 8. Juli 2020, 13:16 @16_Bit: Die Zahlen sind aber anders als im Beispiel nicht aufsteigend sortiert, oder? Denn wären sie dass, wäre `min()`/`max()` nicht sinnvoll, denn das wäre dann ja einfach das erste und letzte Element.
Richtig, die Zahlen sind nicht geordnet.
Antworten