Курс 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. Создание спинбокса в tkinter
  2. Анонимные функции в Python
  3. Big O оптимизация
  4. Эффективная конкатенация строк в Python
  5. Структура строк в Python
  6. Ускорение выполнения кода в Python
  7. Объявление переменных в Python
  8. Логирование с Logzero
  9. Итерация по итерируемым объектам
  10. Преобразование списков в словарь
  11. Возведение в квадрат с помощью itertools
  12. Проверка дублей в списке.
  13. Расчет времени выполнения
  14. Тестирование времени с Freezegun
  15. Сравнение def и lambda-функций
  16. Работа с срезами в Python
  17. Капитализация строк
  18. Работа с модулем cmath
  19. Проверка однородности элементов списка
  20. Сортировка списка по индексам
  21. Регулярные выражения в Python
  22. Тестирование с responses
  23. Лямбда-функции в цикле
  24. Метод classmethod
  25. Создание обратного итератора
  26. Работа с argparse
  27. Возврат нескольких значений
  28. Проблема с изменяемыми аргументами
  29. Функция pow() — возвести число в степень
  30. Логирование с Logzero: ротация файла
  31. Извлечение данных из JSON
  32. Извлечение аудио из видео
  33. Автоматизация действий с Pyautogui
  34. Форматирование строк в Python.
  35. Оператор is в Python
  36. Работа с collections в Python.
  37. Метод hash в Python
  38. Списки: объединение, изменение
  39. Python: отсутствие точек с запятыми
  40. Метод Event.wait() в Python
  41. Логирование в Python

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