Seleccionar item aleatoriamente de uma lista em Python
-
Utilize o módulo
random
para seleccionar um item aleatório a partir de uma lista em Python -
Utilize o módulo
secrets
para seleccionar um item aleatório a partir de uma lista em Python -
Utilize o módulo
NumPy
para seleccionar um item aleatório a partir de uma lista em Python
Este tutorial mostra-lhe como seleccionar um item aleatório a partir de uma lista em Python. Existem múltiplas formas simples de o conseguir, todas elas envolvendo a importação de módulos em Python.
Este tutorial cobrirá soluções que requerem os módulos random
, secrets
, e NumPy
.
Note-se que todas estas soluções que serão apresentadas farão uso de pseudo geradores de números aleatórios (PRNG).
Utilize o módulo random
para seleccionar um item aleatório a partir de uma lista em Python
O módulo mais comum utilizado para randomização é o módulo random
. Este módulo implementa funções de utilidade pseudo-aleatória para apoiar operações que envolvam aleatorização.
Digamos que queremos escolher um nome aleatório de uma lista, como se fosse uma votação.
["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
Para escolher um nome aleatório a partir desta lista, utilizaremos random.choice()
, que seleccionará um item a partir dos dados disponíveis que são dados.
import random
names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
def selectRandom(names):
return random.choice(names)
print("The name selected is: ", selectRandom(names))
A saída, evidentemente, será variável e aleatória. Portanto, pode ser qualquer um dos seis nomes que são armazenados dentro de names
variáveis.
Utilize o módulo secrets
para seleccionar um item aleatório a partir de uma lista em Python
O módulo secrets
é utilizado essencialmente para o mesmo fim que o random
. No entanto, o secrets
fornece um método criptográfico seguro de implementação do PRNG.
Em aplicações da vida real como o armazenamento de palavras-passe, autenticação, encriptação e desencriptação, e tokens. Os secrets
são muito mais seguros do que utilizar o random
, uma vez que só é bom para simulações ou operações que não lidam com dados sensíveis.
Neste problema, ambos os módulos fornecem o mesmo valor, uma vez que não estamos a lidar com quaisquer dados sensíveis e estamos a fazer isto para simulação.
Vamos utilizar a mesma lista de names
para este exemplo. O secrets
também tem uma versão da função choice()
que produz a mesma saída variável 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))
Utilize o módulo NumPy
para seleccionar um item aleatório a partir de uma lista em Python
O módulo NumPy
também tem funções utilitárias para aleatorização e tem algumas ferramentas expansivas como argumentos para a sua função choice()
.
Mais uma vez, utilizaremos a mesma lista de names
para demonstrar a função 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))
A função retornará a mesma saída variável que os outros dois módulos produzidos.
A função NumPy
também fornece outros argumentos para choice()
para gerar múltiplas saídas sob a forma de lista.
O segundo argumento aceita um valor inteiro para determinar quantos itens aleatórios devem retornar. Digamos que queremos devolver 4 itens aleatórios da lista names
.
def selectRandom(names):
return numpy.random.choice(names, 4)
print("The names selected are: ", selectRandom(names))
Amostra de resultados:
The names selected are: ['John', 'Jill', 'Jill', 'Jill']
Há uma probabilidade de que o mesmo item seja repetido mais do que uma vez no resultado aleatório.
Se preferir que os itens do resultado sejam únicos, podemos passar um terceiro argumento boolean
, permitindo a amostragem aleatória sem substituição.
def selectRandom(names):
return numpy.random.choice(names, 4, False)
Saída de amostras:
The names selected are: ['Jill', 'John', 'Jack', 'Jean']
A função produzirá sempre uma lista única sem qualquer item duplicado.
Uma grande desvantagem se adicionarmos o terceiro argumento é o tempo de execução da função, uma vez que executa uma tarefa adicional para verificar duplicados e substituí-los por um item que ainda não existe dentro dos resultados.
Em resumo, a selecção de itens aleatórios a partir de uma lista Python pode ser conseguida através da utilização de um destes três módulos: random
, secrets
, ou NumPy
. Cada um deles tem os seus benefícios e desvantagens.
Se quiser ter um método PRNG criptograficamente seguro, então os secrets
são o melhor módulo para isso. Se o seu objectivo for apenas a simulação ou a manipulação de dados não sensíveis, utilize o random
ou o NumPy
. Se quiser mais do que um único resultado aleatório, então utilize 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.
LinkedIn