Guten Abend liebe Community!
Ich bin recht neu in Python und stelle mir deshalb zum Üben selbst gerne ein paar Aufgaben. Dafür möchte ich zuerst simple Sortier-Algorithmen in Python schreiben.
Doch vorab möchte ich mir ein endliches Array erstellen, bei dem jede Zahl nur ein einziges mal vorkommt. Dabei sollen die Indizes mit zufälligen Integern belegt werden und jeder Wert darf nur einmal auftauchen.
also bei Zahlen zwischen 1 und 20 zum Beispiel so:
a[0]=15
a[1]=7
...
Kennt jemand vielleicht eine schnelle Methode, die mir gewährleistet, dass jede Zahl auch wirklich nur einmal in meinem Array vorkommt? Bei jeder neuen generierten Zahl erstmal bei allen belegten Stellen zu prüfen, ob der Wert schon existiert, wäre ja höchst ineffizient.
Array mit eindeutigen und zufälligen Integers
Code: Alles auswählen
import random
def get_random_ints(start, stop, size=None):
ints = range(start, stop)
if size is None:
size = len(ints)
return random.sample(ints, size)
Das führt zu einer Fehlermeldung weil shuffle() nicht mit einem Generator umgehen kann. Abgesehen davon hat ein i for i in some_iterable außer der Erzeugung eines Generators keinen wirklichen Effekt, da ja so rein gar nichts dabei verändert wird.__deets__ hat geschrieben:zahlen = random.shuffle(i for i in range(100))
Man sollte nicht kurz vorm schlafen gehen Posten....
Der Generator gehört natürlich wahlweise in ein List oder zur List-Comprehension gemacht.
Und shuffle verändert in Place
zahlen = [i for i in range(100)]
random.shuffle(zahlen)
Der Generator gehört natürlich wahlweise in ein List oder zur List-Comprehension gemacht.
Und shuffle verändert in Place
zahlen = [i for i in range(100)]
random.shuffle(zahlen)
@__deets__: ... und auch nicht kurz nach dem Aufstehen
Code: Alles auswählen
zahlen = list(range(100))
random.shuffle(zahlen)