Курс 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. Руководство по библиотеке pydantic
  2. Профилирование кода на Python
  3. Новшества Flask 2.0
  4. Переопределение метода delitem в Python
  5. Инверсия списков и строк в Python
  6. Работа с географическими данными.
  7. Создание словаря с значением по умолчанию
  8. Основы слова
  9. Модуль xkcd: загрузка комиксов
  10. Работа с Telegram API на Python
  11. Округление дробей в Python
  12. Методы list в Python
  13. Python: изменяемые и неизменяемые коллекции
  14. Метод classmethod
  15. Использование подчеркивания в REPL
  16. Выход из профиля в Django
  17. Генераторы списков в Python
  18. Создание новых списков
  19. Избегайте двойного подчеркивания
  20. Установка и использование TensorFlow
  21. Создание итерируемых объектов
  22. Генератор списка в Python
  23. Форматирование строк в Python
  24. Контроль точности вывода чисел
  25. Удаление файлов и папок в Python
  26. Оператор Walrus в Python
  27. Показ всплывающих окон Tkinter
  28. Сокращение ссылок с pyshorteners
  29. Magic Commands — улучшение работы с Python
  30. Метод add для класса Vector
  31. Вычисление фазы комплексного числа
  32. Удаление ключей из словаря
  33. JMESPath в Python
  34. Библиотека wikipedia для Python
  35. Работа со строками в Python
  36. Виртуальное окружение Python
  37. Преобразование числа в список цифр
  38. Хешируемые ключи в Python
  39. Константы в модуле cmath
  40. Асинхронное выполнение задач в процессах
  41. Структура строк в Python
  42. Явный импорт в Python
  43. Получение значений из словарей
  44. Python Calendar Usage
  45. Удаление элемента из списка
  46. Работа с CSV файлами в Python

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