Курс 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. Работа с NumPy
  2. Пропуск начальных строк с помощью dropwhile()
  3. Конкатенация строк в Python
  4. Метод rename() для переименования файлов и каталогов
  5. Lambda Functions in Python
  6. Комментарии в Python
  7. capitalize() — изменение регистра первого символа строки
  8. Лямбда-функции для min/max
  9. 9 уловок для чистого кода
  10. Делегирование в Python
  11. Блок try…finally в Python
  12. Создание словарей и множеств в Python
  13. Просмотр внешнего файла в Python
  14. Новшества Flask 2.0
  15. Область видимости переменных
  16. Множественное наследование в Python
  17. Методы HTTP запросов в Flask
  18. Скрытие вывода данных
  19. Оболочка Python
  20. Работа с библиотекой requests
  21. Объединение словарей в Python
  22. Модуль subprocess: запуск внешних команд
  23. Метод enumerate() в Python
  24. Копирование в Python
  25. Удаление пробелов методом translate()
  26. Исправление ошибки NameError
  27. Конвертация коллекций в Python.
  28. Декораторы в Python
  29. Создание треугольника Паскаля
  30. Python Метод sleep() из time
  31. Функция zip() в Python
  32. Документация функции help() в Python
  33. Получение частей дроби
  34. Измерение потребления памяти при сортировке
  35. Поиск шаблона в строке
  36. Форматирование строк в Python
  37. Присвоение и ссылки
  38. Преобразование в float
  39. Возврат значений из генератора
  40. Python: Фильтрация списков с помощью filter()
  41. Транспонирование матрицы в Python
  42. Операторы увеличения и уменьшения переменной

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