Seleziona casualmente l'elemento da una lista in Python

Rayven Esplanada 10 ottobre 2023
  1. Usa il modulo random per selezionare un elemento casuale da una lista in Python
  2. Usa i secrets del modulo per selezionare un elemento casuale da una lista in Python
  3. Usa il modulo NumPy per selezionare un elemento casuale da una lista in Python
Seleziona casualmente l'elemento da una lista in Python

Questo tutorial mostra come selezionare un elemento casuale da una lista in Python. Ci sono molti modi semplici per ottenere questo risultato, e tutti implicano l’importazione di moduli Python.

Questo tutorial tratterà soluzioni che richiedono i moduli random, secrets e NumPy.

Si noti che tutte queste soluzioni che verranno presentate faranno uso di generatori di numeri pseudo casuali (PRNG).

Usa il modulo random per selezionare un elemento casuale da una lista in Python

Il modulo più comune utilizzato per la randomizzazione è il modulo random. Questo modulo implementa funzioni di utilità pseudo-casuali per supportare le operazioni che coinvolgono la randomizzazione.

Supponiamo di voler scegliere un nome a caso da una lista come se fosse una votazione.

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

Per scegliere un nome casuale da questo lista, useremo random.choice(), che selezionerà un elemento dai dati disponibili forniti.

import random

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


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


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

L’output, ovviamente, sarà variabile e casuale. Quindi può essere uno qualsiasi dei sei nomi memorizzati nella variabile names.

Usa i secrets del modulo per selezionare un elemento casuale da una lista in Python

Il modulo secrets è essenzialmente utilizzato per lo stesso scopo di random. Tuttavia, secrets fornisce un metodo crittograficamente sicuro per implementare PRNG.

Nella vita reale applicazioni come la memorizzazione di password, autenticazione, crittografia e decrittografia e token. secrets è molto più sicuro che usare random, poiché è utile solo per simulazioni o operazioni che non gestiscono dati sensibili.

In questo problema, entrambi i moduli forniscono lo stesso valore, poiché non gestiamo dati sensibili e lo facciamo per la simulazione.

Useremo lo stesso lista di names per questo esempio. secrets ha anche una versione della funzione choice() che produce lo stesso output variabile di 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))

Usa il modulo NumPy per selezionare un elemento casuale da una lista in Python

Il modulo NumPy ha anche funzioni di utilità per la randomizzazione e ha alcuni strumenti espansivi come argomenti per la sua funzione choice().

Di nuovo, useremo lo stesso lista names per dimostrare la funzione 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 funzione restituirà lo stesso output variabile prodotto dagli altri due moduli.

NumPy fornisce anche altri argomenti per choice() per generare più output sotto forma di una lista.

Il secondo argomento accetta un valore intero per determinare quanti elementi casuali restituire. Supponiamo di voler restituire 4 elementi casuali dalla lista names.

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


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

Output di esempio:

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

È probabile che lo stesso elemento venga ripetuto più di una volta nel risultato randomizzato.

Se preferisci che gli elementi del risultato siano univoci, possiamo passare un terzo argomento booleano, abilitando il campionamento casuale senza sostituzione.

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

Output di esempio:

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

La funzione produrrà sempre una lista univoco senza elementi duplicati.

Uno dei principali svantaggi se aggiungiamo il terzo argomento è il runtime della funzione poiché esegue un’attività aggiuntiva per verificare la presenza di duplicati e sostituirli con un elemento che non esiste ancora nei risultati.

In sintesi, la selezione di elementi casuali da una lista Python può essere ottenuta utilizzando uno di questi tre moduli: random, secrets o NumPy. Ognuno ha i suoi vantaggi e svantaggi.

Se vuoi avere un metodo PRNG crittograficamente sicuro, allora secrets è il modulo migliore per questo. Se il tuo scopo è solo per la simulazione o la manipolazione di dati non sensibili, usa random o NumPy. Se vuoi più di un singolo risultato casuale, usa 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

Articolo correlato - Python List