Maison > développement back-end > Tutoriel Python > Pourquoi `random.shuffle()` de Python renvoie-t-il `None` ?

Pourquoi `random.shuffle()` de Python renvoie-t-il `None` ?

Mary-Kate Olsen
Libérer: 2024-11-26 14:31:10
original
862 Les gens l'ont consulté

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

Listes aléatoires en Python : démêler l'énigmatique Aucun retour

En plongeant dans les profondeurs du module aléatoire de Python, on peut tomber sur le comportement déroutant de random.shuffle( ). Au mépris des attentes, cette fonction semble renvoyer la valeur éthérée None après avoir apparemment mélangé une liste. Pour résoudre cette énigme, embarquons dans un voyage dans le fonctionnement interne de random.shuffle.

Une affaire sur place

Contrairement à la convention de renvoi de la structure de données modifiée, random.shuffle () choisit une voie plus énigmatique. Il transforme silencieusement la liste à laquelle il s’applique, sans aucune preuve tangible de ses actions. Cette altération subtile, connue sous le nom de « modification sur place », est une caractéristique de nombreuses méthodes de l'API Python qui modifient les structures de données. Par conséquent, random.shuffle() renvoie None, laissant derrière lui une liste mélangée sans aucune confirmation explicite.

Témoin du Shuffling

Pour être témoin du travail insaisissable de random.shuffle(), considérez ce qui suit code :

x = ['foo', 'bar', 'black', 'sheep']
from random import shuffle
random.shuffle(x)
print(x)
Copier après la connexion

L'exécution de ce code imprimera la liste mélangée, révélant les fruits de l'invisibilité de random.shuffle() travail.

Créer une nouvelle liste battue

Cependant, si votre désir n'est pas simplement d'assister à la transformation d'une liste mais de créer une nouvelle liste battue, d'autres avenues vous attendent. Random.sample() est prêt à être servi, offrant un moyen de générer une copie mélangée d'une liste existante tout en laissant l'original intact :

shuffled_x = random.sample(x, len(x))
Copier après la connexion

Alternativement, sorted() combiné avec des offres random.random() une autre voie vers une liste mélangée, bien qu'avec un coût de calcul :

shuffled_x = sorted(x, key=lambda k: random.random())
Copier après la connexion

Les deux approches génèrent une copie mélangée de votre liste, vous permettant de manipuler le nouvelle liste sans perturber l'original.

Conclusion

Le comportement particulier de la fonction random.shuffle() peut initialement faire sourciller, mais comprendre sa nature de modification sur place et explorer des approches alternatives pour créer de nouvelles les listes mélangées vous permettent d'exploiter efficacement sa magie aléatoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal