Code: Alles auswählen
while A:
a = A.pop()
if a in A:
print("doppelt", a)
Code: Alles auswählen
while A:
a = A.pop()
if a in A:
print("doppelt", a)
Code: Alles auswählen
import time
t1 = time.time()
n = len(A)
for phase in range(1,n,1):
for i in range(0,n-phase):
if A[i] > A[i+1]:
hilf = A[i]
A[i] = A[i+1]
A[i+1] = hilf
t2 = time.time()
fehler = False
for i in range(len(A)-1):
if A[i] > A[i+1]:
fehler = True
break
if fehler:
print('Fehler')
else:
print('alles Korrekt')
print(A)
print('Laufzeit = ', t2-t1)
Code: Alles auswählen
# Gegeben eine Liste von Zahlen. Bestimmen Sie ob alle Zahlen paarweise
# verschieden sind ohne die Liste vorher zu sortieren.
Code: Alles auswählen
print('Verschieden' if len(A) == len(set(A)) else 'Nicht verschieden')
Code: Alles auswählen
hashset = [[] for _ in range(100)]
for a in A:
bucket = hashset[a % len(hashset)]
if a in bucket:
print("Duplikat", a)
else:
bucket.append(a)
Code: Alles auswählen
def all_items_are_unique(A):
for i, item in enumerate(A):
try:
A.index(item, i + 1)
except ValueError:
pass # Nicht mehrfach vorhanden.
else:
return False
return True
Danke schonmal dafür, habe jz mit pop() übernommen und bissl was dazu gemacht, das ding is ich weiß nicht was ich sonst noch nicht benutzen darf sonst hätte ich halt schon einige ideen...__blackjack__ hat geschrieben: ↑Sonntag 10. Mai 2020, 12:29 @Schlitzaaa: Falls die ursprüngliche Liste nicht verändert werden darf, man halt vorher eine Kopie und arbeite mit der weiter.
Alternativ könnte man auch über die Listenelemente und den Index iterieren (`enumerate()`) und die `index()`-Methode verwenden um zu ermitteln, ob das Element nach dem Index noch mal vorkommt. Ungetestet:Code: Alles auswählen
def all_items_are_unique(A): for i, item in enumerate(A): try: A.index(item, i + 1) except ValueError: pass # Nicht mehrfach vorhanden. else: return False return True
Code: Alles auswählen
def all_items_are_unique(A):
return len(A) == len(set(A))
Code: Alles auswählen
def all_items_are_unique(A):
return all(a != b for a, b in pairwise(sorted(A)))
Ich weiß er sagt ja selbst das es eig. nicht Feld ist in Python, aber ich muss das tdem ohne hinbekommen__blackjack__ hat geschrieben: ↑Sonntag 10. Mai 2020, 13:47 @Schlitzaaa: Ich denke so ein bisschen ein Problem bei der Aufgabe ist, ist dass das keine Python-Aufgabe ist, wir hier aber geneigt sind Python-Antworten zu geben.
Die Aufgabe soll zwar in Python(-Syntax) gelöst werden, aber es fängt schon mit der Formulierung der Aufgabe im Betreff an: „Python Feld …“ — „Feld“ ist eine übliche deutsche Übersetzung von „Array“. Python hat so etwas nicht als eingebauten Datentyp. Der normale Grunddatentyp für Sequenzen ist eine Liste und auf Listen sind Operationen definiert, was man aber anscheinend alles nicht verwenden soll. Stattdessen Indexherumgehampel was man aus „low level“-Programmiersprachen mit Arrays als eingebautem Datentyp kennt, was aber so gar kein idiomatisches Python ist.
Die offensichtliche, idiomatische Python-Lösung wäre das mit einem `set` zu lösen:Wenn man eine Lösung mit sortierter Liste schreiben will, dann wäre das `sorted()`, `pairwise()`, und `all()`. `pairwise()` entweder ”selbst” geschrieben, nach dem Rezept in der Dokumentation vom `itertools`-Modul oder aus dem externen `more_itertools` importiert:Code: Alles auswählen
def all_items_are_unique(A): return len(A) == len(set(A))
Eine Gemeinsamkeit von beiden Lösungen ist das nicht-verwenden von irgendwelchen Indexzugriffen. Das ist in Python (und anderen Hochsprachen) nämlich eher selten, das man per Laufindex irgendwo zugreift. Man braucht Indexzugriffe zwar auch in Python, aber nicht wenn man linear durch die Elemente geht. Die sind für den wahlfreien Zugriff, also wenn der Programmierer nicht vorhersagen kann in welcher Reihenfolge auf die Elemente zugegriffen wird.Code: Alles auswählen
def all_items_are_unique(A): return all(a != b for a, b in pairwise(sorted(A)))
Die Aufgabenstellung scheint aber sehr auf Indexzugriffe fixiert zu sein. Also etwas was man beispielsweise von Aufgabenstellungen in C oder Pascal erwarten würde, wo das Array die zentrale sequentielle Datenstruktur ist, und man per Index zugreifen *muss*. Naja, fast, in C sind auch Zeiger üblich, was ja aber auch ein sehr „low level“-Konzept ist, was es in Python so nicht gibt.