В этом посте я покажу вам, как перемешать элементы массива или списка в Python.
Из массива любого типа мы собираемся смешать или рандомизировать данные таким образом, чтобы их порядок был другим. Для этого мы создадим копию массива, пройдем по нему и поменяем местами его элементы.
Содержание
Объяснение алгоритма на языке Python
Мы будем выполнять цикл for от 0 до значения длины массива минус 1. То есть, увеличивать число от 0 до длины -1.
Таким образом, мы получим индекс массива на каждом шаге. Затем мы вычислим случайный индекс, взяв случайное число в определенном диапазоне.
Когда у нас есть случайный индекс, мы помещаем элемент текущего индекса во временную переменную. Затем копируем все, что находится в случайном индексе, в текущий элемент, и, наконец, помещаем временную переменную в случайный индекс.
По сути, мы выполняем обмен переменными. Вы увидите, что все будет очень просто.
Код перемешивания списка
Итак, давайте посмотрим код для перемешивания списка в Python. Я заключил его в функцию, которая получает массив и возвращает другой массив с элементами исходного, но с произвольной расстановкой элементов.
def mix_list(list_original):
# Создаем копию, поскольку мы не должны изменять оригинал
list = list_original[:]
# Цикл от 0 до длины списка -1
list_length = len(list)
for i in range(list_length):
# Получение случайного индекса
index_aleatory = random.randint(0, list_length - 1)
# Замена
temp = list[i]
lista[i] = list[index_aleatory]
list[index_aleatory] = temp
# Возвращаем список
return list
Code language: PHP (php)
Важно создать копию массива, чтобы не модифицировать исходный. Цикл for выполняется в строке 7, случайный индекс вычисляется в строке 10, а замена выполняется в строках с 12 по 14.
Использование функции
Мы можем использовать его следующим образом:
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
mixed_list = mix_list(list)
print("Исходный список: ")
print(list)
print("Перемешанный список: ")
print(mixed_list)
Code language: PHP (php)
Массив или список может быть получен откуда угодно и может иметь элементы любого типа.
Собираем все вместе
Полный код выглядит следующим образом:
import random
def mix_list(list_original):
# Создаем копию, поскольку мы не должны изменять оригинал
list = list_original[:]
# Цикл от 0 до длины списка -1
list_length = len(list)
for i in range(list_length):
# Получение случайного индекса
index_aleatory = random.randint(0, list_length - 1)
# Замена
temp = list[i]
lista[i] = list[index_aleatory]
list[index_aleatory] = temp
# Возвращаем список
return list
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
mixed_list = mix_list(list)
print("Исходный список: ")
print(list)
print("Перемешанный список: ")
print(mixed_list)
Code language: PHP (php)