Курс 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. Хеширование паролей с солью
  2. Вложенные циклы в Python
  3. Пространство имен в Python
  4. Решатель судоку на Python с pygame
  5. Модуль subprocess: запуск внешних команд
  6. Конкатенация строк в Python
  7. Декораторы в Python
  8. Принцип одной функции
  9. Декоратор проверки активности
  10. Декоратор защиты анонимных пользователей
  11. GitHub в Telegram: подписка на уведомления
  12. Логирование с Loguru
  13. Progress с библиотекой tqdm
  14. TON Smart Challenge #2: участие и подготовка
  15. Оптимизация гиперпараметров с Scikit Optimize
  16. Конвертация коллекций в Python.
  17. Проверка подстроки в строке с помощью in
  18. Аннотации типов в Python
  19. Декораторы в Python
  20. Поиск подстроки в строке
  21. Явный импорт переменных
  22. Вычисление разности множеств в Python
  23. Разница между датами
  24. Поиск файлов по шаблону
  25. Работа с контекстным менеджером Pool
  26. Любовь к Python
  27. Форматирование данных с pprint
  28. Изменение переменной в Python: nonlocal
  29. Работа с комплексными числами в Python
  30. Тестирование времени с Freezegun
  31. Удаление дубликатов с помощью множеств
  32. Оператор == в Python
  33. Исправление ошибки NameError
  34. Декораторы в Python
  35. Python Ellipsis использование
  36. Переопределение метода __pow__
  37. Замена переменных в Python
  38. Декораторы в Python
  39. Создание и операции с дробями
  40. Ошибка NotImplemented в Python
  41. Установка переменной среды в Python
  42. Метод enumerate() в Python
  43. Разделение строки на пары ключ-значение.
  44. Вызов внешних программ в Python с помощью sh
  45. Подсчет количества элементов в списке
  46. Автоматизация с Python

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