Python | Formas de barajar una lista

Mezclar una secuencia de números siempre ha sido una utilidad útil y la pregunta que ha aparecido en muchas entrevistas de colocación en empresas también. Conocer más de un método para conseguirlo siempre puede ser un plus. Analicemos ciertas formas en que esto se puede lograr.
Método #1: Algoritmo de barajar de Fisher-Yates
Este es uno de los famosos algoritmos que se emplea principalmente para barajar una secuencia de números en python. Este algoritmo solo toma el valor de índice más alto y lo intercambia con el valor actual, este proceso se repite en un bucle hasta el final de la lista. 
 

Python3

# Python3 code to demonstrate
# shuffle a list
# using Fisher–Yates shuffle Algorithm
 
import random
 
# initializing list
test_list = [1, 4, 5, 6, 3]
 
# Printing original list
print ("The original list is : " + str(test_list))
 
# using Fisher–Yates shuffle Algorithm
# to shuffle a list
for i in range(len(test_list)-1, 0, -1):
     
    # Pick a random index from 0 to i
    j = random.randint(0, i + 1)
   
    # Swap arr[i] with the element at random index
    test_list[i], test_list[j] = test_list[j], test_list[i]
     
# Printing shuffled list
print ("The shuffled list is : " +  str(test_list))
Producción: 

The original list is : [1, 4, 5, 6, 3]
The shuffled list is : [4, 3, 1, 5, 6]

 

  
Método #2: Uso de random.shuffle() 
Este es el método más recomendado para barajar una lista. Python en su biblioteca aleatoria proporciona esta función incorporada que baraja la lista en el lugar. El inconveniente de esto es que el orden de la lista se pierde en este proceso. Útil para los desarrolladores que eligen ahorrar tiempo y ajetreo.
 

Python3

# Python3 code to demonstrate
# shuffle a list
# using random.shuffle()
 
import random
 
# initializing list
test_list = [1, 4, 5, 6, 3]
 
# Printing original list
print ("The original list is : " + str(test_list))
 
# using random.shuffle()
# to shuffle a list
random.shuffle(test_list)
 
# Printing shuffled list
print ("The shuffled list is : " +  str(test_list))
Producción: 

The original list is : [1, 4, 5, 6, 3]
The shuffled list is : [5, 6, 4, 3, 1]

 

  
Método #3: Uso de random.sample() 
Esta es una función bastante útil, mejor que el método de reproducción aleatoria utilizado anteriormente en el aspecto de que crea una nueva lista aleatoria y la devuelve en lugar de alterar el orden de la lista original. Esto es útil en los casos en que requerimos conservar la lista original.
 

Python3

# Python3 code to demonstrate
# shuffle a list
# using random.sample()
 
import random
 
# initializing list
test_list = [1, 4, 5, 6, 3]
 
# Printing original list
print ("The original list is : " + str(test_list))
 
# using random.sample()
# to shuffle a list
res = random.sample(test_list, len(test_list))
 
# Printing shuffled list
print ("The shuffled list is : " +  str(res))
Producción: 

The original list is : [1, 4, 5, 6, 3]
The shuffled list is : [5, 3, 6, 1, 4]

 

Método 4:

En este método, seleccionamos un índice al azar y agregamos ese elemento en ese índice a la lista.

Python3

import random
 
# Assign array
arr = [1, 2, 3, 4, 5, 6]
 
# Display original array
print("Original List: ", arr)
 
# Get length of List
n = len(arr)
 
#repeat the following for n number of times
for i in range(n):
    #select an index randomly
    j = random.randint(0, n-1)
    #delete the element at that index.
    element=arr.pop(j)
    #now append that deleted element to the list
    arr.append(element)
print("Shuffled List: ",arr)
Producción

Original List:  [1, 2, 3, 4, 5, 6]
Shuffled List:  [4, 5, 3, 2, 6, 1]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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