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.

    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:

    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:

    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.

    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:

    ['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.

    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().

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *