Курс 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. Использование super() в Python
  2. Проверка элемента в множестве.
  3. Выход из профиля в Django
  4. Атрибуты класса и экземпляра
  5. Метод get для словарей
  6. Установка User-Agent в Python
  7. Область видимости переменных
  8. split() — разделение строки
  9. Удаление знаков препинания в Python
  10. Проверка дубликатов в Python
  11. Передача неизвестных аргументов в Python.
  12. Работа с итераторами в Python
  13. Просмотр атрибутов и методов класса
  14. ChainMap.new_child() — добавление нового словаря
  15. Основы слова
  16. Делегирование в Python
  17. Форматирование строк в Python
  18. Оператор деления для класса Rational
  19. Использование type hints
  20. Управление ресурсами в Python
  21. PATCH-запрос с библиотекой requests
  22. Проверка памяти объекта
  23. Управление памятью в Python
  24. Работа с модулем os в Python
  25. Создание новых списков в Python
  26. Отрицательные индексы списков в Python
  27. Установка Home Assistant
  28. Методы в Python
  29. Функция enumerate в Python
  30. Считывание бинарного файла в Python
  31. Метод append() для списка
  32. Работа с буфером обмена на Python
  33. Множественные конструкторы в Python
  34. Разработка игры Pong с turtle
  35. Работа с переменными в Python
  36. Срез в Python
  37. Библиотека schedule: планировщик задач
  38. Создание namedtuple списком полей
  39. Удаление URL-адресов в Python
  40. Объединение списков с использованием itertools.chain
  41. Создание виртуальной среды
  42. Counter() — подсчет элементов
  43. Определение локальных переменных в Python
  44. Распаковка аргументов в Python
  45. Взаимодействие с sys
  46. Возвращение нескольких значений

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