Курс 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. Установка Python3.7 и PIP
  2. Работа с CSV файлами в Python
  3. Гибкие функции Python
  4. Python Ellipsis использование
  5. Методы __repr__ и __str__ в Python
  6. Оптимизация памяти с помощью __slots__
  7. Многострочные комментарии в Python
  8. Многострочные строки в Python
  9. Проверка на истинность объектов в Python
  10. Очистка вывода в Python
  11. Декоратор защиты анонимных пользователей
  12. Namedtuple в Python
  13. Работа с YAML в Python
  14. Многопоточность и асинхронное программирование в Python
  15. Склеивание строк без циклов
  16. Псевдонимы в Python
  17. Извлечение новостей с помощью newspaper3k
  18. Работа с timedelta
  19. Удаление элементов из списка
  20. Работа с словарями в Python
  21. Оператор += для объединения строк
  22. Функция enumerate в Python
  23. Мощь вложенных функций в Python
  24. Генераторы в Python
  25. Парсинг веб-страниц с Beautiful Soup
  26. Измерение времени выполнения кода
  27. Создание комплексных чисел
  28. Работа с срезами в Python
  29. Встраивание HTML в Jupyter Notebook
  30. Переопределение метода __or__()
  31. Использование модуля math
  32. Переворот последовательности
  33. Работа с *args и **kwargs в Python
  34. Распаковка с оператором *
  35. Обновление и получение данных в SQLite
  36. Руководство по библиотеке pydantic
  37. Создание класса очереди
  38. Декораторы с @wraps
  39. Python union() функция — объединение множеств
  40. Функции высшего порядка в Python
  41. Форматирование строк в Python
  42. Управление асинхронными задачами с помощью Semaphore
  43. Абстракции словарей и множеств в Python
  44. Получение текущей даты и времени
  45. Обновление множества в Python
  46. Работа с байтовыми строками в Python
  47. Создание пользовательской коллекции в Python
  48. Функции map, filter, reduce
  49. Округление банкира в Python
  50. Метод __int__ в Python

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