Skip to content

Mischen einer Liste, eines Strings oder eines Tupels in Python (random.shuffle, sample)

Python

In Python können Sie eine Liste, einen String und eine Tupel mit random.shuffle() und random.sample() mischen (= randomisieren).

random.shuffle() mischt eine Liste an Ort und Stelle und random.sample() gibt eine neue randomisierte Liste zurück. random.sample() kann auch für einen String und ein Tupel verwendet werden.

  • random.shuffle() mischt eine Liste an Ort und Stelle
  • random.sample() gibt eine neue gemischte Liste zurück
  • Wie man eine Zeichenfolge und ein Tupel mischt
  • Initialisieren Sie den Zufallszahlengenerator mit random.seed()

If SIE in aufsteigender oder absteigender Reihenfolge sortieren oder umkehren möchten, anstatt zu mischen, lesen SIE sterben following Artikel.

random.shuffle() mischt eine Liste an Ort und Stelle

Sie können eine Liste mit random.shuffle() an Ort und Stelle mischen.

import random

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]

random.sample() gibt eine neue gemischte Liste zurück

random.sample() gibt eine neue gemischte Liste zurück. Die ursprüngliche Liste bleibt unverändert.

random.sample() gibt zufällige Elemente aus einer Liste zurück. Übergeben Sie die Liste an das erste Argument und die Anzahl der zurückzugebenden Elemente an das zweite Argument. Nichts finden Sie im folgenden Artikel.

Indem die Gesamtzahl der Elemente in der Liste auf das zweite Argument gesetzt WIRD, gibt random.sample() eine neue Liste zurück, in der alle Elemente zufällig gemischt sind. Die Gesamtzahl der Elemente in der Liste erhalten Sie mit len().

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]

print(l)
# [0, 1, 2, 3, 4]

Wie man eine Zeichenfolge und ein Tupel mischt

Zeichenfolgen und Tupel sind unveränderlich, daher lösen random.shuffle(), das das ursprüngliche Objekt ändert, einen Fehler TypeError aus.

s = 'abcde'

# random.shuffle(s)
# TypeError: 'str' object does not support item assignment

t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)

# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment

Um Zeichenfolgen oder Tupel zu mischen, verwenden Sie random.sample(), wodurch ein neues Objekt erstellt wird.

random.sample() Gibt Eine Liste zurück, Selbst Wenn Eine Zeichenfolge Oder Ein Tupel Für Das Erste Argument Angegeben Ist, Daher Ist Es Notwendig, Es In Eine Zeichenfolge Oder Ein Tupel Zu Konvertieren.

Für Zeichenfolgen WIRD Eine Liste von Zeichen Zurückgegeben. Verwenden Sie die Methode join(), um wieder zu einer einzelnen Zeichenfolge zu verketten.

sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca

Verwenden Sie tuple() für Tupel, wodurch ein Tupel aus einer Liste erstellt WIRD.

tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)

Initialisieren Sie den Zufallszahlengenerator mit random.seed()

Sie können einen Zufallszahlengenerator mit random.seed() initialisieren.

Nach der Initialisierung mit demselben Seed wird es auf dieselbe Weise gemischt.

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]