Zufällige Auswahl von Elementen aus einer Liste in Python

Rayven Esplanada 10 Oktober 2023
  1. Verwenden Sie das Modul random, um ein zufälliges Element aus einer Liste in Python auszuwählen
  2. Verwenden Sie das Modul secrets, um ein zufälliges Element aus einer Liste in Python auszuwählen
  3. Verwenden Sie das Modul NumPy, um ein zufälliges Element aus einer Liste in Python auszuwählen
Zufällige Auswahl von Elementen aus einer Liste in Python

Dieses Tutorial zeigt Ihnen, wie Sie in Python ein zufälliges Element aus einer Liste auswählen. Es gibt mehrere einfache Möglichkeiten, dies zu erreichen, die alle den Import von Python-Modulen beinhalten.

Dieses Tutorial behandelt Lösungen, die die Module random, secrets und NumPy benötigen.

Beachten Sie, dass alle diese Lösungen, die vorgestellt werden, Pseudo-Zufallszahlengeneratoren (PRNG) verwenden werden.

Verwenden Sie das Modul random, um ein zufälliges Element aus einer Liste in Python auszuwählen

Das am häufigsten verwendete Modul zur Randomisierung ist das Modul random. Dieses Modul implementiert pseudo-zufällige Hilfsfunktionen zur Unterstützung von Operationen, die eine Randomisierung beinhalten.

Nehmen wir an, wir wollen einen zufälligen Namen aus einer Liste auswählen, als ob es sich um einen Wahlzettel handeln würde.

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

Um einen zufälligen Namen aus dieser Liste auszuwählen, verwenden wir random.choice(), das ein Element aus den gegebenen verfügbaren Daten auswählt.

import random

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return random.choice(names)


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

Die Ausgabe wird natürlich variabel und zufällig sein. Es kann also jeder der sechs Namen sein, die in der Variable names gespeichert sind.

Verwenden Sie das Modul secrets, um ein zufälliges Element aus einer Liste in Python auszuwählen

Das Modul secrets wird im Wesentlichen für den gleichen Zweck wie random verwendet. Allerdings bietet secrets eine kryptographisch sichere Methode zur Implementierung von PRNG.

In realen Anwendungen wie dem Speichern von Passwörtern, Authentifizierung, Ver- und Entschlüsselung und Token. secrets sind viel sicherer als die Verwendung von random, da sie nur für Simulationen oder Operationen geeignet sind, die keine sensiblen Daten verarbeiten.

In diesem Problem bieten beide Module den gleichen Wert, da wir keine sensiblen Daten handhaben und dies für die Simulation tun.

Wir werden für dieses Beispiel die gleiche Liste von names verwenden. secrets hat auch eine Version der Funktion choice(), die die gleiche variable Ausgabe wie random.choice() erzeugt.

import secrets

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return secrets.choice(names)


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

Verwenden Sie das Modul NumPy, um ein zufälliges Element aus einer Liste in Python auszuwählen

Das NumPy Modul hat auch Hilfsfunktionen für die Randomisierung und hat einige expansive Werkzeuge als Argumente für seine choice() Funktion.

Wieder werden wir die gleiche Liste von names benutzen, um die Funktion numpy.random.choice() zu demonstrieren.

import numpy

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


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


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

Die Funktion wird die gleiche Variablenausgabe zurückgeben, die die beiden anderen Module erzeugt haben.

NumPy liefert auch andere Argumente für choice(), um mehrere Ausgaben in Form einer Liste zu erzeugen.

Das zweite Argument akzeptiert einen ganzzahligen Wert, um zu bestimmen, wie viele Zufallselemente zurückgegeben werden sollen. Nehmen wir an, wir wollen 4 zufällige Elemente aus der Liste names zurückgeben.

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


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

Beispielausgabe:

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

Es besteht die Wahrscheinlichkeit, dass dasselbe Element im randomisierten Ergebnis mehr als einmal wiederholt wird.

Wenn Sie es vorziehen, dass das Ergebnis eindeutig ist, können wir ein drittes “boolesches” Argument übergeben, das eine ersatzlose Zufallsstichprobe ermöglicht.

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

Ausgabe der Stichprobe:

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

Die Funktion wird immer eine eindeutige Liste ohne doppelte Einträge erzeugen.

Ein großer Nachteil, wenn wir das dritte Argument hinzufügen, ist die Laufzeit der Funktion, da sie eine hinzugefügte Aufgabe ausführt, um auf Dubletten zu prüfen und diese durch ein Element zu ersetzen, das in den Ergebnissen noch nicht existiert.

Zusammenfassend lässt sich sagen, dass die Auswahl zufälliger Elemente aus einer Python-Liste durch die Verwendung eines dieser drei Module erreicht werden kann: random, secrets oder NumPy. Jedes dieser Module hat seine Vor- und Nachteile.

Wenn Sie eine kryptographisch sichere PRNG-Methode haben wollen, dann ist secrets das beste Modul dafür. Wenn Ihr Zweck nur die Simulation oder die Manipulation nicht-sensibler Daten ist, verwenden Sie entweder random oder NumPy. Wenn Sie mehr als ein einzelnes Zufallsergebnis wollen, dann verwenden Sie NumPy.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python List