Cómo seleccionar elementos aleatoriamente de una lista en Python

    Introducción

    La selección de un elemento o valor aleatorio de una lista es una tarea común, ya sea para un resultado aleatorio de una lista de recomendaciones o simplemente para un mensaje aleatorio.

    En este artículo, veremos cómo seleccionar elementos al azar de una lista en Python. Cubriremos la recuperación de ambos elementos aleatorios singulares, así como la recuperación de múltiples elementos, con y sin repetición.

    Seleccionar un elemento aleatorio de la lista de Python

    El enfoque más intuitivo y natural para resolver este problema es generar un número aleatorio que actúa como índice para acceder a un elemento de la lista.

    Para implementar este enfoque, veamos algunos métodos para generar números aleatorios en Python: random.randint() y random.randrange(). Podemos usar adicionalmente random.choise() y proporcionar un iterable, lo que da como resultado un elemento aleatorio de ese iterable que se devuelve.

    Te puede interesar:Corrección ortográfica en Python con TextBlob

    Usando random.randint ()

    random.randint(a, b) devuelve un entero aleatorio entre a y b inclusivo.

    Queremos un índice aleatorio en el rango de 0 a len(list)-1, para obtener un índice aleatorio de un elemento de la lista:

    import random
    
    letters = ['a', 'b', 'c', 'd', 'e', 'f']
    random_index = random.randint(0,len(letters)-1)
    
    print(letters[random_index])
    

    Ejecutar este código varias veces nos da como resultado:

    e
    c
    f
    a
    

    Usando random.randrange ()

    random.randrange(a) es otro método que devuelve un número aleatorio n tal que 0 <= n < a:

    Te puede interesar:Introducción a la visualización de datos en Python con Pandas
    import random
    
    letters = ['a', 'b', 'c', 'd', 'e', 'f']
    random_index = random.randrange(len(letters))
    
    print(letters[random_index])
    

    Ejecutar este código varias veces producirá algo como:

    f
    d
    d
    e
    

    Como random.randrange(len(letters)) devuelve un número generado aleatoriamente en el rango 0 a len(letters) - 1, lo usamos para acceder a un elemento al azar en letters, como hicimos en el enfoque anterior.

    Este enfoque es un poquito más simple que el anterior, simplemente porque no especificamos el punto de partida, que por defecto es 0.

    Usando random.choice ()

    Ahora, una solución aún mejor que la anterior sería usar random.choice() ya que esta es precisamente la función diseñada para resolver este problema:

    Te puede interesar:Python: captura múltiples excepciones en una línea
    import random 
    
    letters = ['a', 'b', 'c', 'd', 'e', 'f']
    
    print(random.choice(letters))
    

    Ejecutar esto varias veces da como resultado:

    b
    e
    e
    f
    e
    

    Seleccionar más de un elemento aleatorio de la lista de Python

    Usando random.sample ()

    El primer método que podemos utilizar para seleccionar más de un elemento al azar es random.sample(). Produce una muestra, basada en la cantidad de muestras que nos gustaría observar:

    import random 
    
    letters = ['a', 'b', 'c', 'd', 'e', 'f']
    
    print(random.sample(letters, 3))
    

    Esto devuelve una lista:

    ['d', 'c', 'a']
    

    Este método selecciona elementos sin reemplazo, es decir, selecciona sin duplicados ni repeticiones.

    Te puede interesar:Cómo iterar sobre un diccionario en Python

    Si ejecutamos esto:

    print(random.sample(letters, len(letters)))
    

    Como no devuelve duplicados, solo devolverá nuestra lista completa en un orden aleatorio:

    ['a', 'e', 'c', 'd', 'f', 'b']
    

    Usando random.choices ()

    Similar a la función anterior, random.choices() devuelve una lista de elementos seleccionados aleatoriamente de un iterable dado. Sin embargo, no realiza un seguimiento de los elementos seleccionados, por lo que también puede obtener elementos duplicados:

    import random 
    
    letters = ['a', 'b', 'c', 'd', 'e', 'f']
    
    print(random.choices(letters, k=3))
    

    Esto devuelve algo parecido a:

    Te puede interesar:Trama de violín de Seaborn – Tutorial y ejemplos
    ['e', 'f', 'f']
    

    Además, si ejecutamos:

    print(random.choices(letters, k = len(letters)))
    

    Puede devolver algo como:

    ['d', 'e', 'b', 'd', 'd', 'd']
    

    random.choices devuelve un k-Lista de tamaño de elementos seleccionados al azar con reemplazo.

    Este método también se puede utilizar para implementar elecciones aleatorias ponderadas que puede explorar más en el documentación oficial de Python.

    Te puede interesar:Diagrama de caja de Seaborn – Tutorial y ejemplos

    Conclusión

    En este artículo, hemos explorado varias formas de recuperar uno o varios elementos seleccionados al azar de una lista en Python.

    Hemos accedido a la lista en índices aleatorios usando randint() y randrange(), pero también obtuve elementos aleatorios usando choice() y sample().

     

    Rate this post

    Etiquetas: