Курс 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. Оформление кода по PEP 8
  2. Форматирование вывода с F-строками
  3. Переворот строки
  4. Частичное применение функций в Python
  5. Профилирование кода
  6. Работа с кортежами в Python
  7. Функции классификации комплексных чисел
  8. Блок try…finally в Python
  9. Работа с очередями в Python
  10. Объединение словарей в Python 3.5+
  11. Преобразование Word в PDF с Spire.Doc
  12. Работа с GitHub в Telegram
  13. Сортировка HTML-элементов
  14. Эффективная конкатенация строк в Python
  15. Управление контекстом выполнения
  16. Функция zip() в Python
  17. Оптимизация строк в Python
  18. Генераторы в Python
  19. Удаление URL-адресов в Python
  20. Обработка исключений в Python
  21. Управление памятью в Python
  22. Метод __float__ в Python
  23. Поиск самого частого элемента
  24. Использование модуля __future__
  25. Работа с deque в Python
  26. Метод add для класса Vector
  27. Вложенные генераторы в Python
  28. Пропуск начальных строк с помощью dropwhile()
  29. Работа со строками
  30. Сортировка в Python
  31. Работа с JSON в Python
  32. Метод bool() в Python
  33. Инициализация переменных
  34. Метод __call__ в Python
  35. Основы работы с os
  36. Подсчет количества элементов в списке
  37. Работа с CSV файлами
  38. Пропуск строк в файле с itertools
  39. Извлечение новостей с помощью newspaper3k
  40. Комментарии в Python.
  41. Создание новой даты в Python
  42. Оператор распаковки в Python
  43. Модуль math: основные функции
  44. Разделение строки с помощью split()
  45. Преобразование range в итератор
  46. PATCH-запрос с библиотекой requests
  47. Python: возвращение нескольких значений

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