Курс 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 в Telegram
  5. Логирование с Logzero: ротация файла
  6. Оптимизация параметров в Python
  7. Распаковка элементов массива
  8. Solidity для DeFi Ethereum
  9. Работа с defaultdictами в Python
  10. Транспонирование 2D-массива с помощью zip
  11. Форматирование чисел в Python
  12. Декодирование байтов в строку
  13. Модуль os в Python: работа с файлами
  14. JSON в Python: модуль, dump, dumps, load
  15. Анализ кода — Python
  16. Метод rmatmul для пользовательских матриц
  17. Генератор бросков кубиков
  18. Изучение объектов с помощью dir()
  19. Сортировка в Python
  20. Модуль Operator в Python
  21. Определение объема памяти объекта
  22. Установка Home Assistant
  23. Работа с YAML в Python
  24. Область видимости переменных
  25. Создание новых списков в Python
  26. Создание уникального множества
  27. Парсинг статей с Newspaper3k
  28. Импорт модулей в Python 3.12
  29. Получение идентификатора объекта в памяти
  30. Аргумент по умолчанию
  31. Проверка условий: all и any
  32. Оператор assert в Python
  33. Преобразование данных в Python
  34. Многострочные комментарии в Python
  35. Объединение коллекций в Python
  36. Метод join() для объединения элементов в строку.
  37. Работа с срезами в Python
  38. Вложенные циклы в Python
  39. Библиотека funcy: удобные утилиты
  40. Основы слова
  41. Оценка точности модели
  42. Возвращение нескольких значений
  43. Работа с очередями в Python
  44. Работа с timedelta в Python
  45. Создание итерируемых объектов

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