Курс 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. Динамическая типизация в Python
  2. Особенности ключей словаря в Python
  3. Модуль subprocess: запуск внешних команд
  4. Объединение списков с помощью zip
  5. Оператор is в Python
  6. Цепные операции в Python
  7. Хеширование паролей с использованием salt
  8. Запуск внешнего кода в Jupyter
  9. Группы исключений в Python
  10. Функция __init__ в Python
  11. Импорт с альтернативным именем
  12. Работа с Colorama
  13. Подсчет элементов с помощью Counter
  14. Отправка HTTP-запросов в Python
  15. Измерение времени выполнения кода
  16. Работа с многоуровневыми словарями в Python
  17. Метод сравнения объектов в Python
  18. Получение текущей даты и времени
  19. Декодирование строк в Python
  20. JSON в Python: модуль, dump, dumps, load
  21. Экспорт функций в Python
  22. Обработка ошибок в Python
  23. Вычисление времени выполнения
  24. Оптимизация памяти с __slots__
  25. Оператор Walrus в Python
  26. Иерархия классов в Python
  27. Присоединение элементов коллекции
  28. split() без разделителя
  29. Синхронизация потоков с time.sleep()
  30. Генерация случайных чисел в Python
  31. Модуль math: константы π и e
  32. Удаление элементов из списка
  33. Просмотр файла в Jupyter Noteboo
  34. Счетчик ссылок в Python
  35. Показ всплывающих окон Tkinter
  36. Получение списка кортежей из словаря
  37. Обработка StopIteration в Python
  38. Получение частей дроби
  39. Многострочные комментарии в Python
  40. Создание словарей с defaultdict
  41. Генераторы в Python
  42. Улучшение читаемости кода в Python
  43. Получение идентификатора объекта в памяти
  44. Создание .exe файла с pyinstaller
  45. Измерение времени выполнения в Python
  46. Склеивание строк без циклов
  47. Хэш-функции в Python

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