Курс Python → Перетасовка списков в Python

Для реализации перетасовки списков без использования готовых функций можно воспользоваться алгоритмом Фишера-Йейтса, который разработан для создания беспристрастных случайных перестановок списков. Этот алгоритм имеет важное значение при выборке элементов из списка. Он был популяризирован Дональдом Кнутом и отличается своей беспристрастностью, оптимальной линейной эффективностью по времени, использованием постоянного пространства и инкрементным подходом.

Для реализации алгоритма Фишера-Йейтса в Python можно создать функцию, которая будет принимать на вход исходный список и возвращать его перетасованную версию. Ниже приведен пример кода:


import random

def fisher_yates_shuffle(arr):
    for i in range(len(arr) - 1, 0, -1):
        j = random.randint(0, i)
        arr[i], arr[j] = arr[j], arr[i]
    return arr

# Пример использования
my_list = [1, 2, 3, 4, 5]
shuffled_list = fisher_yates_shuffle(my_list)
print(shuffled_list)

В данном примере функция fisher_yates_shuffle принимает список arr, и с помощью цикла и случайных перестановок элементов списка, осуществляет его перетасовку. Затем возвращается перетасованный список. Пример использования функции показывает, как можно перетасовать список [1, 2, 3, 4, 5] и вывести результат на экран.

Таким образом, использование алгоритма Фишера-Йейтса позволяет эффективно и беспристрастно перетасовать списки в Python без использования готовых функций. Этот алгоритм является надежным и часто применяется в различных задачах, связанных с выборкой элементов из списка в случайном порядке.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Основы работы с базами данных в Python
  2. Реализация операции -= для пользовательского класса
  3. Разделение строки на пары ключ-значение.
  4. Работа с файловой системой в Python
  5. Подсчет элементов с помощью Counter
  6. Defaultdict в Python
  7. Конструктор в Python
  8. Python enumerate() использование
  9. Генератор списка в Python
  10. Управление памятью в Python
  11. Bootle — простой веб-фреймворк
  12. ChainMap избыточные ключи
  13. Рациональные числа в Python
  14. Оператор * в Python
  15. Подсчет элементов с помощью Counter из collections
  16. Группировка элементов в словарь
  17. Преобразование символов в нижний регистр
  18. Логические значения в Python
  19. Передача аргументов через **arguments
  20. TON Smart Challenge #2: участие и подготовка
  21. Распаковка элементов массива
  22. Функция format() в Python
  23. Группы исключений в Python
  24. %pinfo: получение информации об объекте
  25. Улучшенные подсказки для импорта в Python 3.12
  26. Numpy: использование Ellipsis
  27. Генераторы в Python
  28. Модуль math: основные функции
  29. Оператор «and» в Python
  30. Фильтрация списка от «ложных» значений
  31. Определение имен функций
  32. Метод join() для объединения элементов в строку.
  33. Протокол управления контекстом
  34. Справка по импортированным модулям
  35. Подсказки типов в Python
  36. Транспонирование матрицы в Python
  37. Имена объектов в Python
  38. Применение функций в Python
  39. Метод __ilshift__ для битового сдвига влево
  40. Метод join() с набором
  41. Создание новых списков в Python
  42. Логирование в Python
  43. Сравнение def и lambda функций в Python

Marketello читают маркетологи из крутых компаний