Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt Pythons „random.shuffle' „None' zurück?

Warum gibt Pythons „random.shuffle' „None' zurück?

Patricia Arquette
Freigeben: 2024-12-09 09:20:07
Original
182 Leute haben es durchsucht

Why Does Python's `random.shuffle` Return `None`?

Pythons Random Shuffle: Warum die nicht-scheinbare Rückkehr?

Wenn man die Funktion random.shuffle von Python verwendet, könnte man verwirrt sein, sie zu sehen return Keine. Dieses Verhalten ergibt sich aus seiner In-Place-Natur.

Im Gegensatz zu Funktionen, die die transformierte Datenstruktur nach Änderungen zurückgeben, ändert random.shuffle direkt die Eingabeliste. Daher wird „None“ zurückgegeben, um anzugeben, dass kein expliziter Wert zurückgegeben wird.

Betrachten Sie zur Veranschaulichung den folgenden Code:

x = ['foo', 'bar', 'black', 'sheep']
random.shuffle(x)
print(x)
Nach dem Login kopieren

Beim Ausführen dieses Codes wird die Liste x gemischt -place, aber die Funktion random.shuffle selbst gibt keinen Wert zurück. Folglich gibt die print-Anweisung die jetzt gemischte Liste aus.

Wenn Sie eine neue, gemischte Liste wünschen, ohne das Original zu ändern, können Sie alternative Methoden verwenden:

  • random.sample(x, len(x)): Erstellt eine neue zufällig gemischte Liste, indem Werte aus dem Original entnommen werden Liste.
  • shuffled = sorted(x, key=lambda k: random.random()): Verwendet die Sortierung mit einem zufälligen Schlüssel, um eine neue, gemischte Liste zu generieren.

Verstehen Sie, dass random.sample zwar eine O(N)-Komplexität hat, sorted jedoch aufgrund der zugrunde liegenden Sortierung eine O(N log N)-Komplexität hat Operation.

Indem Sie das direkte Verhalten von random.shuffle verstehen und bei Bedarf alternative Methoden verwenden, können Sie effektiv steuern, wie Sie Listenmischvorgänge in Python handhaben.

Das obige ist der detaillierte Inhalt vonWarum gibt Pythons „random.shuffle' „None' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage