Курс 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. Проверка ввода с помощью isdigit
  2. Работа с файлами в Python
  3. Управление User-Agent в Python
  4. Изменение элемента списка
  5. Форматирование строк в Python
  6. Отступы в Python
  7. Работа с типами данных в Python с помощью pydantic.
  8. Экранирование символов в Python
  9. Округление в Python
  10. HTTP-запросы с библиотекой Requests
  11. Получение пути к текущему скрипту с помощью os
  12. Распаковка с оператором *
  13. globals и locals
  14. Использование эмодзи в Python
  15. Конкатенация строк с помощью join()
  16. Поиск подстроки в строке
  17. Функции any() и all() в Python
  18. Генераторные функции в Python
  19. Базовые объекты Python
  20. Область видимости переменных
  21. Преобразование данных в Python
  22. Функция zip() — объединение последовательностей
  23. Экспорт данных с помощью writefile
  24. Метод repr() в Python
  25. Декоратор Ajax required
  26. Генерация ключей RSA
  27. Установка и использование pyshorteners
  28. JSON-esque в Python
  29. Открытие, чтение и закрытие файла
  30. Работа с срезами в Numpy
  31. Разделение строки с помощью re.split()
  32. Настройка шрифта и цвета в Tkinter
  33. Основные операции с Numpy
  34. Генераторные функции в Python
  35. Функции с дополнением
  36. Оператор «or» в Python
  37. Цикл while в Python
  38. Аннотации типов в Python
  39. Протокол управления контекстом
  40. Оператор += в Python
  41. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  42. Метод title() в Python
  43. Лимиты на ресурсы Python
  44. Перебор элементов списка в Python

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