Seite 1 von 1

Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 01:03
von Coziac
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.

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 01:08
von __deets__
zahlen = random.shuffle(i for i in range(100))

zB.

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 01:23
von Coziac
i for i in range(100) erzeugt mir also eine Liste mit den Zahlen 1 bis 100 und die shuffle-Methode mixt die Werte durch?

verstehe nicht ganz, wie "i for i in" zu lesen ist

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 01:41
von snafu

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)
__deets__ hat geschrieben:zahlen = random.shuffle(i for i in range(100))
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.

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 08:39
von __deets__
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 :x

zahlen = [i for i in range(100)]
random.shuffle(zahlen)

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 09:02
von Sirius3
@__deets__: ... und auch nicht kurz nach dem Aufstehen :wink:

Code: Alles auswählen

zahlen = list(range(100))
random.shuffle(zahlen)

Re: Array mit eindeutigen und zufälligen Integers

Verfasst: Donnerstag 30. November 2017, 09:03
von __deets__
Wer sagt denn was von aufstehen! Hier wird noch im Bett gelegen.