Comment sélectionner un élément au hasard dans une liste en Python

  1. Utilisez le module random pour sélectionner un élément aléatoire dans une liste en Python
  2. Utilisez le module secrets pour sélectionner un élément aléatoire à partir d’une liste en Python
  3. Utilisez le module numpy pour sélectionner un élément aléatoire à partir d’une liste en Python

Ce tutoriel vous montre comment sélectionner un élément aléatoire dans une liste en Python. Il existe plusieurs moyens simples pour y parvenir, qui impliquent tous l’importation de modules Python.

Ce tutoriel couvre les solutions qui nécessitent les modules random, secrets et numpy.

Notez que toutes ces solutions qui seront présentées utiliseront des générateurs de nombres pseudo-aléatoires (PRNG).

Utilisez le module random pour sélectionner un élément aléatoire dans une liste en Python

Le module le plus couramment utilisé pour la randomisation est le module random. Ce module met en œuvre des fonctions utilitaires pseudo-aléatoires pour soutenir les opérations impliquant la randomisation.

Disons que nous voulons choisir un nom aléatoire dans une liste comme s’il s’agissait d’un bulletin de vote.

['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']

Pour choisir un nom aléatoire dans cette liste, nous utiliserons random.choice(), qui sélectionnera un élément parmi les données disponibles qui sont données.

import random

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return random.choice(names)

print("The name selected is: ", selectRandom(names))

Le résultat sera bien sûr variable et aléatoire. Il peut donc s’agir de n’importe lequel des six noms qui sont stockés dans la variable names.

Utilisez le module secrets pour sélectionner un élément aléatoire à partir d’une liste en Python

Le module secrets est essentiellement utilisé dans le même but que le module random. Cependant, secrets fournit une méthode cryptographiquement sécurisée d’implémentation du PRNG.

Dans les applications de la vie réelle comme le stockage des mots de passe, l’authentification, le cryptage et le décryptage, et les jetons. Le secrets est beaucoup plus sûr que le random, car il ne convient qu’aux simulations ou aux opérations qui ne traitent pas de données sensibles.

Dans ce problème, les deux modules fournissent la même valeur, car nous ne manipulons pas de données sensibles et nous le faisons pour la simulation.

Nous utiliserons la même liste de names pour cet exemple. secrets possède également une version de la fonction choice() qui produit la même sortie de variable que random.choice().

import secrets

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return secrets.choice(names)

print("The name selected is: ", selectRandom(names))

Utilisez le module numpy pour sélectionner un élément aléatoire à partir d’une liste en Python

Le module numpy a également des fonctions utilitaires pour la randomisation et a quelques outils expansifs comme arguments pour sa fonction choice().

Encore une fois, nous utiliserons la même liste names pour démontrer la fonction numpy.random.choice().

import numpy 

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return numpy.random.choice(names)

print("The name selected is: ", selectRandom(names))

La fonction retournera la même sortie de variable que les deux autres modules ont produite.

Numpy fournit également d’autres arguments pour que choice() génère plusieurs sorties sous forme de liste.

Le second argument accepte une valeur entière pour déterminer le nombre d’éléments aléatoires à retourner. Disons que nous voulons renvoyer 4 éléments aléatoires de la liste names.

def selectRandom(names):
  return numpy.random.choice(names, 4)

print("The names selected are: ", selectRandom(names))

Exemple de sortie :

The names selected are: ['John', 'Jill', 'Jill', 'Jill']

Il est probable que le même élément sera répété plus d’une fois dans le résultat randomisé.

Si vous préférez que les éléments du résultat soient uniques, nous pouvons passer un troisième argument boolean, permettant un échantillonnage aléatoire sans remplacement.

def selectRandom(names):
  return numpy.random.choice(names, 4, False)

Production :

The names selected are: ['Jill', 'John', 'Jack', 'Jean']

La fonction produira toujours une liste unique sans aucun élément en double.

Un inconvénient majeur si nous ajoutons le troisième argument est le temps d’exécution de la fonction puisqu’elle exécute une tâche supplémentaire pour vérifier les doublons et les remplacer par un élément qui n’existe pas encore dans les résultats.

En résumé, la sélection d’éléments aléatoires dans une liste Python peut être réalisée en utilisant l’un de ces trois modules : random, secrets, ou numpy. Chacun d’eux a ses avantages et ses inconvénients.

Si vous voulez avoir une méthode PRNG sécurisée cryptographiquement, alors secrets est le meilleur module pour cela. Si votre objectif est uniquement la simulation ou la manipulation de données non sensibles, utilisez soit random ou numpy. Si vous voulez plus qu’un seul résultat aléatoire, utilisez numpy.

Article connexe - Python List

  • Comment écrire une liste au format CSV en Python
  • Comment lire le CSV pour lister en Python
  • comments powered by Disqus