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

Warum gibt „random.shuffle()' von Python „None' zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-26 14:31:10867Durchsuche

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

Listen in Python mischen: Das rätselhafte None Return enträtseln

Wenn man in die Tiefen des Zufallsmoduls von Python eintaucht, stößt man möglicherweise auf das verwirrende Verhalten von random.shuffle( ). Entgegen allen Erwartungen scheint diese Funktion den ätherischen None-Wert zurückzugeben, nachdem sie angeblich eine Liste gemischt hat. Um dieses Rätsel zu lösen, begeben wir uns auf eine Reise in das Innenleben von random.shuffle.

Eine In-Place-Affäre

Im Gegensatz zur Konvention, die geänderte Datenstruktur, random.shuffle, zurückzugeben () wählt einen rätselhafteren Weg. Es transformiert die Liste, auf die es angewendet wird, stillschweigend, ohne konkrete Beweise für seine Handlungen. Diese subtile Änderung, die als „In-Place-Modifikation“ bezeichnet wird, ist ein Markenzeichen vieler Python-API-Methoden, die Datenstrukturen ändern. Daher gibt random.shuffle() „None“ zurück und hinterlässt eine gemischte Liste ohne explizite Bestätigung.

Das Mischen miterleben

Um die schwer fassbare Arbeit von random.shuffle() mitzuerleben, beachten Sie Folgendes Code:

x = ['foo', 'bar', 'black', 'sheep']
from random import shuffle
random.shuffle(x)
print(x)

Das Ausführen dieses Codes druckt die gemischte Liste und enthüllt die unsichtbaren Ergebnisse von random.shuffle() Arbeit.

Erstellen einer neuen gemischten Liste

Wenn Ihr Wunsch jedoch nicht nur darin besteht, die Transformation einer Liste mitzuerleben, sondern auch eine neue gemischte Liste zu erstellen, warten andere Möglichkeiten auf Sie. Random.sample() ist einsatzbereit und bietet eine Möglichkeit, eine gemischte Kopie einer vorhandenen Liste zu erstellen, während das Original unberührt bleibt:

shuffled_x = random.sample(x, len(x))

Alternativ bietet sich sorted() in Kombination mit random.random() an ein anderer Weg zu einer gemischten Liste, allerdings mit einem Rechenaufwand:

shuffled_x = sorted(x, key=lambda k: random.random())

Beide Ansätze ergeben eine gemischte Kopie Ihrer Liste, die Sie bearbeiten können die neue Liste, ohne das Original zu stören.

Fazit

Das eigenartige Verhalten der Funktion random.shuffle() mag zunächst eine Augenbraue hochziehen, aber wenn man die Natur der direkten Modifikation versteht und alternative Ansätze zum Erstellen untersucht Neue gemischte Listen ermöglichen es Ihnen, die Zufallsmagie effektiv zu nutzen.

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

Stellungnahme:
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