Курс 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. JSON в Python: модуль, dump, dumps, load
  3. Фильтрация входных данных в Python
  4. Принципы LSP и ISP в Python
  5. Обход дочерних элементов BeautifulSoup
  6. Выбор редактора кода.
  7. Прокачанный трейсинг ошибок
  8. Профилирование данных с Pandas.
  9. Возвращение нескольких значений
  10. Профилирование с Pandas
  11. Работа с CSV файлами в Python
  12. Лямбда-функции в Python
  13. Переименование файлов в Python
  14. Генераторы в Python
  15. Разрешение имен в Python
  16. Объединение списков в строку
  17. Переворот последовательности
  18. Декораторы в Python
  19. Форматирование вывода с F-строками
  20. Тип CodeType в Python.
  21. Установка и использование модуля «howdoi»
  22. Работа с байтовыми строками в Python
  23. Pretty-printing JSON в Python
  24. Использование метода lower()
  25. Сортировка списка по индексам
  26. Работа с deque из collections
  27. Сравнение неупорядоченных списков
  28. Удаление элементов из списка в Python
  29. Работа с модулем Calendar
  30. Обновление ключей в Python
  31. Работа со случайными элементами
  32. Принцип одной функции
  33. Поиск с помощью регулярных выражений
  34. Анализ текста на русском языке с помощью Pymystem3
  35. Явный импорт в Python
  36. Метод __getitem__ в Python
  37. Библиотека Chartify: руководство
  38. Работа с множествами в Python
  39. inspect в Python: анализ кода
  40. Оператор match в Python
  41. Функция product() из itertools
  42. Вложенные генераторы в Python
  43. Defaultdict в Python
  44. Многострочные комментарии в Python
  45. Функциональное программирование.

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