Seleccionar item aleatoriamente de uma lista em Python

  1. Utilize o módulo random para seleccionar um item aleatório a partir de uma lista em Python
  2. Utilize o módulo secrets para seleccionar um item aleatório a partir de uma lista em Python
  3. Utilize o módulo NumPy para seleccionar um item aleatório a partir de uma lista em Python
Seleccionar item aleatoriamente 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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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

Artigo relacionado - Python List