Курс 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. Установка Git и AWS CLI
  2. Работа с файлами в Python
  3. Отладка кода
  4. Применение функции к элементам списка
  5. Условные выражения в Python
  6. Генератор списка с условием if
  7. Метод lt для сортировки объектов
  8. Функция reduce() в Python
  9. Поиск наиболее частого элемента
  10. Проверка условий в Python
  11. Подчеркивание в REPL
  12. split() без разделителя
  13. Сравнение def и lambda функций в Python
  14. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  15. Очистка строки в Python
  16. Блок else в циклах Python
  17. Метод __float__ в Python
  18. Создание новых списков в Python
  19. Python union() функция — объединение множеств
  20. Расчет времени выполнения программы
  21. Проверка на палиндром
  22. Работа с исключениями в Python
  23. Многоточие в Python
  24. Именованные аргументы в Python
  25. Безопасный доступ к значениям словаря
  26. Упрощенный вывод данных в Python
  27. Преобразование в float
  28. Оператор in в Python
  29. HTTP-запросы с библиотекой Requests
  30. Область видимости переменных в Python
  31. Оператор «or» в Python
  32. Оператор match в Python
  33. Удаление дубликатов из списка
  34. Лямбда-функции в Python
  35. Вывод сложных структур данных с помощью pprint
  36. Использование *args
  37. Передача аргументов в Python
  38. Таймер обратного отсчета
  39. %pinfo: получение информации об объекте
  40. Преобразование генераторов в циклы
  41. Работа с рекламными данными в Pandas
  42. Очистка данных с Pandas
  43. Оператор Walrus в Python 3.8
  44. Нахождение хеша для бесконечности и NaN в Python
  45. Настройка логгера Logzero
  46. Структурирование данных с Pydantic
  47. Логирование в Python
  48. Проверка дублей в списке.

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