Listenreihenfolge in Python zufällig mischen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Python ist eine Liste eine geordnete Sammlung von Elementen. Manchmal möchten wir die Reihenfolge der Elemente in einer Liste zufällig mischen. Dies kann nützlich sein für Spiele, Simulationen oder jede andere Situation, in der wir ein Element der Zufälligkeit einführen möchten. In dieser Herausforderung werden Sie eine Funktion schreiben, die die Elemente in einer Liste mischen.

Liste mischen

Schreiben Sie eine Funktion shuffle(lst), die eine Liste als Eingabe nimmt und eine neue Liste zurückgibt, die die gleichen Elemente in zufälliger Reihenfolge enthält. Ihre Funktion sollte den Fisher-Yates-Algorithmus verwenden, um die Elemente in der Liste zu mischen.

Der Fisher-Yates-Algorithmus funktioniert wie folgt:

  1. Beginne mit dem letzten Element in der Liste.
  2. Generiere einen zufälligen Index zwischen 0 und dem aktuellen Index.
  3. Tausche das Element am aktuellen Index mit dem Element am zufälligen Index.
  4. Gehe zum nächsten Element in der Liste und wiederhole die Schritte 2-3, bis alle Elemente gemischt sind.

Ihre Funktion sollte die ursprüngliche Liste nicht verändern. Stattdessen sollte sie eine neue Liste mit den gemischten Elementen erstellen.

Sie können davon ausgehen, dass die Eingabeliste mindestens ein Element enthalten wird.

from copy import deepcopy
from random import randint

def shuffle(lst):
  temp_lst = deepcopy(lst)
  m = len(temp_lst)
  while (m):
    m -= 1
    i = randint(0, m)
    temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
  return temp_lst
foo = [1, 2, 3]
shuffle(foo) ## [2, 3, 1], foo = [1, 2, 3]

Zusammenfassung

In dieser Herausforderung haben Sie eine Funktion geschrieben, die die Elemente in einer Liste mithilfe des Fisher-Yates-Algorithmus mischt. Dieser Algorithmus ist ein einfacher und effizienter Weg, um die Reihenfolge der Elemente in einer Liste zufällig zu machen. Durch die Bewältigung dieser Herausforderung haben Sie ein tieferes Verständnis dafür gewonnen, wie Listen in Python funktionieren und wie Sie sie mit Funktionen manipulieren können.