Курс 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. Метод clear для коллекций
  2. Создание класса очереди
  3. Многострочные комментарии в Python
  4. Создание новых списков в Python
  5. Проверка на палиндром
  6. Импорт модулей и пакетов в Python
  7. Метод enumerate() в Python
  8. Оператор continue в Python
  9. Операции с датами в Python
  10. EMOT преобразование эмодзи в текст
  11. Подсказки при вводе данных в Python
  12. Добавление вложенных списков
  13. Объединение словарей в Python
  14. Цикл for в Python
  15. Вычисление натуральных логарифмов в NumPy
  16. Структурирование данных с Pydantic
  17. Объединение коллекций в Python
  18. Идентификатор объекта в Python
  19. Оператор match в Python
  20. Метод getitem для доступа к элементам последовательности
  21. JSON в Python: модуль, dump, dumps, load
  22. Утечки переменных цикла в Python 3.x
  23. Работа со строками в Python
  24. Тестирование времени с Freezegun
  25. Комментарии в Python
  26. Список импортированных модулей в Python
  27. Списки: объединение, изменение
  28. Перехват исключений в Python
  29. Отслеживание прогресса с tqdm
  30. Python Метод del.
  31. PATCH-запрос с библиотекой requests
  32. Сохранение и загрузка модели в PyTorch
  33. Использование эмодзи в Python
  34. Множественное назначение в Python
  35. Lambda-функция в Python: использование с map() и sum()
  36. Проектирование Singleton с метаклассом
  37. Работа с библиотекой xkcd
  38. Профилирование данных с Pandas
  39. Генерация строк с .join()
  40. Импорт модуля из другого каталога
  41. Основы Python за 14 дней
  42. Метод get() в Python
  43. Условные выражения в Python
  44. Метод split() для разделения строк
  45. Работа с zip-архивами в Python
  46. Работа с изменяемыми коллекциями
  47. Получение размера объекта с sys.getsizeof()

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