Seleziona casualmente l'elemento da una lista in Python
-
Usa il modulo
random
per selezionare un elemento casuale da una lista in Python -
Usa i
secrets
del modulo per selezionare un elemento casuale da una lista in Python -
Usa il modulo
NumPy
per selezionare un elemento casuale 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
.
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.
LinkedInArticolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python