Курс 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. Colorama: окрашивание текста в Python
  3. Работа с контекст-менеджером «with»
  4. Локальные переменные.
  5. Атрибуты объекта в Python
  6. Установка и использование библиотеки google
  7. Работа с итераторами через срезы
  8. Работа с асинхронными задачами в Python
  9. Срезы в Python
  10. discard() — удаление элемента из множества
  11. Проекты на Python
  12. Простой калькулятор Python
  13. Избегайте ошибку FileNotFoundError
  14. Создание новой даты в Python
  15. Поиск частого элемента
  16. Экранирование символов в Python
  17. Уникальные значения из списка
  18. Загрузка постов Instagram
  19. Функции с дополнением
  20. Управление фоновыми задачами в Python
  21. Чтение бинарного файла в Python.
  22. Копирование объектов в Python
  23. Работа с argparse
  24. Использование *args
  25. Определение функций с необязательными аргументами
  26. Работа со строками в Python
  27. Основы работы с базами данных в Python
  28. Python: отличительная особенность — отступы
  29. Аргумент по умолчанию
  30. Роль object и type в Python
  31. Работа с функцией next() в Python
  32. GitHub в Telegram: подписка на уведомления
  33. Объединение строк с помощью метода join
  34. Избегание изменяемых аргументов
  35. Удаление элемента из списка в Python
  36. Конкатенация строк с методом join()
  37. Поиск email
  38. Функция enumerate() — Python
  39. Поиск всех индексов подстроки
  40. Combobox в Tkinter
  41. Импорт объектов из модулей
  42. Модуль os в Python: работа с файлами
  43. Сортировка в Python
  44. Запуск внешнего кода в Jupyter
  45. Подписка на Kaspersky Team
  46. Тестирование модели в PyTorch
  47. Метод Enumerate() для списков
  48. Особенности ключей словаря в Python

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