Курс 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. Преобразование PowerPoint в PDF.
  2. Декораторы с аргументами
  3. Замена текста с re.sub()
  4. Цикл for в Python
  5. Упрощение работы с JSON-данными в Python
  6. Транспонирование 2D-массива с помощью zip
  7. Декодирование байтов в строку
  8. Работа с модулем Calendar
  9. Сортировка списка по индексам
  10. Работа с исключениями в Python
  11. Получение списка кортежей из словаря
  12. Проверка переменных окружения в Python
  13. Сортировка с помощью параметра key
  14. Декораторы в Python
  15. Генераторы и сеты в Python
  16. Функция zip() в Python
  17. Пустой оператор pass в Python
  18. Применение функции map() с лямбда-функциями
  19. Отношения подклассов в Python
  20. Enum в Python
  21. F-строки в Python 3.8
  22. Модуль xkcd: добавление юмора в Python
  23. Профилирование с cProfile
  24. Работа с PosixPath() в Python
  25. Преобразование данных в Python
  26. Многострочные комментарии в Python
  27. Форматирование строк с % в Python
  28. Фильтрация элементов с помощью islice
  29. Работа с кортежами в Python
  30. Роль запятой в Python
  31. Регулярные выражения в Python
  32. Оператор in для проверки наличия элемента
  33. Разбиение текста в Python
  34. Создание и удаление объектов
  35. Именованные кортежи в Python
  36. Логирование с Logzero
  37. Создание матрицы в Python
  38. Модуль itertools: комбинации и перестановки
  39. Именование столбцов в Python с pandas
  40. Функции с необязательными аргументами
  41. Списки: объединение, изменение
  42. Замеры производительности в Python
  43. Управление доступом к модулю
  44. Использование функции product
  45. Сохранение и загрузка модели в PyTorch

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