Tuto python : Mélanger aléatoirement l'ordre d'une liste (list shuffling)

Table des matières

Introduction

  1. La fonction shuffle () en python
  2. Mélangez une liste sans perdre la liste d'origine
  3. Mélanger une liste N nombre de fois en utilisant la boucle For et range
  4. Mélanger une liste pour obtenir le même résultat
  5. Mélanger deux listes Python à la fois avec le même ordre
  6. Mélanger une liste de listes en python
  7. Mélanger une liste de dictionnaires en python
  8. Mélanger une liste d'objets en python
  9. Mélanger une liste en utilisant random.sample
  10. Exercices

10.1 Exercice 1

10.2 Exercice 2

10.3 Exercice 3

  1. Solution des exercices

11.1 Exercice 1

11.2 Exercice 2

11.3 Exercice 3

Conclusion

Introduction

Mettre une liste dans un ordre aléatoire peut sembler une tâche inhabituelle, mais cela peut être très utile à de nombreuses fins. Par exemple, vous souhaiterez peut-être attribuer au hasard une liste de tâches aléatoires à un groupe de développeurs, ou générer une liste random des nombres en cours de développement d'un jeu de cartes. Quelle que soit la raison, vous pouvez utiliser le langage de programmation populaire Python pour randomiser l'ordre d'une liste d'éléments.

La fonction aléatoire shuffle () de Python dont nous allons parler dans ce tutoriel mélange la chaîne ou n'importe quelle séquence. Mélanger une liste signifie que nous réorganisons l'ordre des éléments de la liste au hasard. Si vous devez effectuer un mélange selon vos besoins, vous pouvez passer la méthode aléatoire personnalisée à la place d'un argument aléatoire, ce qui dictera la fonction shuffle () sur la façon de randomiser l'élément de la liste.

1. La fonction shuffle () en python

Pour mélanger une séquence comme une liste ou une chaîne en Python, utilisez une méthode aléatoire shuffle (). La méthode random.shuffle () accepte deux paramètres. 1) Séquence 2) aléatoire. La méthode shuffle () en Python prend une séquence (liste, chaîne ou tuple) et réorganise l'ordre des éléments.

Syntaxe :

random.shuffle(sequence, random)

Paramètres :

La méthode shuffle () prend deux paramètres. Sur ces deux derniers, aléatoire est le paramètre facultatif. La séquence correspond à toute séquence que vous souhaitez mélanger. Elle peut être une liste, une chaîne ou un tuple.

L'argument optionnel random est la fonction qui renvoie un nombre flottant aléatoire compris entre 0,1 et 1,0. S'il n'est pas spécifié, alors par défaut, Python utilise la fonction random.random ().

Exemple :

Essayons de mélanger une liste de nombres en utilisant le module random,

Syntaxe :

import random
liste = [99, 12, 26, 22, 25, 82, 59, 54, 73, 72]
print("liste originale:", liste)
random.shuffle(liste)
print("la nouvelle liste:", liste)câble coaxial KX6 QTE400M

Résultat d’exécution :

Dans l'exemple ci-dessus, nous avons mélangé la liste de nombres Python. Tout d'abord, nous avons importé le module aléatoire. Comme la méthode ou la fonction shuffle() est présente dans le module aléatoire. Nous devons donc d'abord importer le module aléatoire. Après cela, nous avons initialisé et créé notre liste de nombres. Ici, vous pouvez créer n'importe quelle liste Python de votre choix. Ensuite, nous avons mélangé la liste Python à l'aide de la fonction shuffle ().

2. Mélangez une liste sans perdre la liste d'origine

Random.shuffle () fonctionne sur place et renvoie None; Par exemple, elle change l'ordre des éléments dans la liste de manière aléatoire. Mais la plupart du temps, nous avons besoin de la liste initiale. Maintenant, comment obtenir une liste initiale ou originale?

Nous pouvons obtenir une liste originale en utilisant les deux méthodes suivantes. Ces options ne modifient pas la liste d'origine, mais elles renvoient la nouvelle liste aléatoire.

  • Faites une copie d'une liste originale dans une nouvelle liste avant de la mélanger (idéale et préférée).
  • Liste aléatoire non mise en place pour obtenir la liste aléatoire en retour au lieu de modifier une liste d'origine.

Voir la syntaxe suivante :

import random
liste = [99, 12, 26, 22, 25, 82, 59, 54, 73, 72]
# copier dans une nouvelle liste
nouvelle_liste = liste[:]
# mélanger la nouvelle liste
random.shuffle(nouvelle_liste)
print("liste originale:", liste)
print("la nouvelle liste:", nouvelle_liste)

Résultat d’exécution :

Dans cet exemple, nous avons d'abord importé un module aléatoire, puis défini une liste de nombres. Ensuite, nous avons copié cette liste dans une nouvelle liste appelée nouvelle_liste. Et puis, nous avons mélangé la nouvelle_liste et imprimé la liste des numéros et la nouvelle_liste, afin de conserver la liste d'origine pour la réutiliser dans le projet au moment désiré.

3. Mélanger une liste N nombre de fois en utilisant la boucle For et range

Parfois, vous voulez mélanger une liste un certain nombre de fois en fonction de vos besoins. En utilisant la même méthode dans l'exemple précédent, vous devez répéter le code plusieurs fois, maintenant nous allons mélanger une liste plusieurs fois en utilisant un chemin plus court.

Exemple :

Nous allons essayer de mélanger la liste du dernier exemple plusieurs fois en utilisant une boucle for et range ().

Syntaxe :

import random
liste = [99, 12, 26, 22, 25, 82, 59, 54, 73, 72]
for x in range(14):
random.shuffle(liste)
print(liste)

Résultat d’exécution :

Dans cet exemple, nous avons pris la liste Python et nous désirons mélanger cette liste 14 fois. Donc, pour obtenir le résultat souhaité nous avons utilisé la boucle Python for avec la plage 14 et nous l'avons initialisée. À l'intérieur de cette boucle for, nous utilisons la méthode shuffle du module random. Elle effectuera le brassage de la liste tant que la boucle se poursuivra.

4. Mélanger une liste pour obtenir le même résultat

Parfois, vous aurez besoin d'obtenir la même liste mélangée dans un projet, par exemple vous développez un jeu de cartes, solitaire par exemple et vous voulez y mettre des niveaux et pour chaque niveau vous voulez qu'une liste mélangée soit générée à chaque fois.

Voyons comment amorcer le générateur aléatoire de telle manière que la fonction shuffle() produise le même résultat à chaque fois. En utilisant les random.seed () et random.shuffle () ensemble, nous pouvons générer la même liste mélangée à chaque fois.

Syntaxe :

import random
liste = [10, 20, 30, 40, 50, 60]
random.seed(4)
random.shuffle(liste)
print("liste mélangée", liste)

Résultat d’exécution :

Si vous continuez à exécuter le code, vous obtiendrez la même liste mélangée, nous obtenons la même liste car nous utilisons la même valeur de départ avant d'appeler la fonction shuffle()

5. Mélanger deux listes Python à la fois avec le même ordre

Supposons que vous souhaitiez mélanger deux listes, mais que vous souhaitiez également conserver le même ordre. Par exemple, une liste contient les noms des employés et l'autre comprend un salaire. Voyons comment randomiser plusieurs listes en conservant leur ordre.

Syntaxe :

import random
liste_noms = ['Ali', 'Annie', 'John', 'Jake']
liste_salaires = [8000, 7500, 11000, 14000]
listesFusionnées = list(zip(liste_noms, liste_salaires))
random.shuffle(listesFusionnées)
liste_noms, liste_salaires = zip(*listesFusionnées)
print ("Listes mélangées :")
print ("Noms des employés:", liste_noms)
print ("Salaire des employés:", liste_salaires)
print ("Nom de l'employé et salaire actuel index 3")
print (liste_noms [2], liste_salaires [2])

Résultat d’exécution :

Dans l'exemple ci-dessus, nous avons d'abord importé le module aléatoire, puis nous avons créé nos deux listes d'employés et leurs salaires, puis nous avons utilisé la fonction zip pour fusionner les deux listes afin d'être mélangées de la même manière, en conséquence nous obtenons les deux listes mélangées, mais chaque employé reste avec son salaire. À la fin, nous avons essayé d'obtenir l'employé avec l'indice 2 et par conséquent l'employé a toujours son même salaire d'avant même après que la séquence ait été mélangée.

6. Mélanger une liste de listes en python

Un autre cas d'utilisation vraiment intéressant est celui où vous avez des structures imbriquées avec des données similaires. Dans ce cas, vous pouvez simplement parcourir les listes et appliquer la fonction shuffle().

Liste aléatoire des listes en python avec boucle. Cela mélangera non seulement le premier niveau des éléments de la liste, mais également ceux imbriqués. Ce code fonctionne uniquement avec deux niveaux de sous-listes, mais la même approche peut être appliquée pour plusieurs niveaux :

Syntaxe :

import random
liste = [['a','b','c'],['d','e','f'],['g','h','i']]
random.shuffle(liste)
for x in liste:
random.shuffle(x)
print(liste)

Résultat d’exécution :

7. Mélanger une liste de dictionnaires en python

Mélanger un dictionnaire n'est pas possible en Python. Cependant, nous pouvons réorganiser l'ordre d'itération des clés d'un dictionnaire. Récupérez toutes les clés d'un dictionnaire et ajoutez-les dans une liste, mélangez cette liste et accédez aux valeurs du dictionnaire à l'aide de nouvelles clés mélangées.

Exemple :

Par exemple, nous avons un dictionnaire d'étudiants qui contient les noms et les notes des étudiants dans un examen, essayons alors de mélanger ce dictionnaire après l'avoir transformé en une liste de dictionnaires.

Syntaxe :

import random
EtudiantsDict = {'Ali':80, 'Annie':75, 'John':95, 'Billy':66}
keys = list(EtudiantsDict.keys())
random.shuffle(keys)
EtudiantsDictMélangé = dict()
for key in keys:
EtudiantsDictMélangé.update({key:EtudiantsDict[key]})
print("\nListe des dictionnaires randomisée :")
print(EtudiantsDictMélangé)

Résultat d’exécution :

8. Mélanger une liste d'objets en python

Dans cette section, nous allons essayer de mélanger une liste d'objets. D'abord, nous allons créer vos objets puis les mettre dans une liste pour les mélanger.

Exemple :

À titre d'exemple, nous allons essayer de mélanger une liste d'objets contenant l'employé de l'objet, son salaire et son nom :

Syntaxe :

import random
class Employé:
def __init__(self, nom, salaire):
self.nom = nom
self.salaire = salaire
emp1 = Employé("Ali", 10000)
emp2 = Employé("Annie", 8000)
emp3 = Employé("Sam", 12000)
emp4 = Employé("John", 7000)
empListe = [emp1, emp2, emp3, emp4]
random.shuffle(empListe)
print(" la liste des objets mélangée :")
for emp in empListe:
print(emp.nom, emp.salaire)

Résultat d’exécution :

9. Mélanger une liste en utilisant random.sample

La méthode « random.sample () » est utile pour échantillonner aléatoirement N éléments d’une liste. Par exemple, vous avez une liste de 10 et vous ne voulez en mélanger que 6 éléments.

Exemple :

Essayons de mélanger seulement 8 éléments à partir d'une liste de nombres avec 10 valeurs.

Syntaxe :

import random
liste = [33, 66, 99, 188, 2, 56, 41,2, 74,8]
liste2=random.sample(liste, 8)
print(liste2)

Résultat d’exécution :

10. Exercices

10.1 Exercice 1

Considérez la liste suivante :

Liste = [4,5,8,9,44,74,62,22,47]

Essayez de mélanger la liste suivante en utilisant la fonction shuffle ()

10.2 Exercice 2

Considérez les 2 listes suivantes, une liste contient le nom du pays et l'autre contient les capitales du pays.

Pays = ['Inde', 'Chine', 'États-Unis ', 'Royaume-Uni']

Capital = ['New Delhi', 'Pékin', 'Washington DC', 'Londres']

Essayez de mélanger les deux listes tout en gardant le même ordre

10.3 Exercice 3

Considérez la liste suivante

Liste = ‘[cours-gratiut.com', 'est', 'le', 'meilleur', 'site', 'pour', 'apprendre ',' python ']. Essayez de mélanger cette liste 10 fois en utilisant range () et random.shuffle

11. Solution des exercices

11.1 Exercice 1

Essayons de mélanger la liste des nombres.

Syntaxe :

import random
Liste = [4,5,8,9,44,74,62,22,47]
random.shuffle(Liste)
print("la nouvelle liste:", Liste)

Résultat d’exécution :

11.2 Exercice 2 

Essayons de mélanger les deux listes dans le même ordre :

Syntaxe :

import random
Pays = ['Inde', 'Chine', 'États-Unis', 'Royaume-Uni']
Capital = ['New Delhi', 'Pékin', 'Washington DC', 'Londres']
listesFusionnées = list(zip(Pays, Capital))
random.shuffle(listesFusionnées)
Pays, Capital = zip(*listesFusionnées)
print ("Listes mélangées :")
print ("Pays:", Pays)
print ("Capital:",Capital)

Résultat d’exécution :

11.3 Exercice 3

Essayons de mélanger la liste 10 fois.

Syntaxe :

import random
Liste = ['cours-gratiut.com', 'est', 'le', 'meilleur', 'site', 'pour', 'apprendre ',' python ']
for x in range(10):
random.shuffle(Liste)
print(Liste)

Résultat d’exécution :

Conclusion

Pour résumer, dans ce didacticiel, nous avons expliqué comment mélanger les listes de manière aléatoire et sélectionner et échantillonner des éléments à partir de listes en python. Nous avons montré comment utiliser la méthode « random.sample () » pour sélectionner aléatoirement un élément spécifié dans une liste. Nous avons également utilisé la méthode « random.shuffle () » avec range () pour mélanger une liste plusieurs fois facilement. De plus, nous avons montré comment mélanger deux listes avec le même ordre en utilisant le module aléatoire et comment mélanger une liste de listes, j'espère que toutes ces techniques vous aideront dans vos futurs projets avec python .

Article publié le 25 Décembre 2020par Mouhtat Bilal