Сообщить об ошибке.

Функция shuffle() модуля random в Python, перемешивает список

Перемешивает изменяемую последовательность случайным образом

Синтаксис:

import random

random.shuffle(x[, random])

Параметры:

  • x - изменяемая последовательность (список),
  • random - функция, которая выдает случайные числа float (устарел с версии Python 3.9 и будет удален в версии 3.11).

Возвращаемое значение:

  • изменяет непосредственно сам объект последовательности.

Описание:

Функция shuffle() модуля random перемешивает изменяемую последовательность x на месте. Функция ничего не возвращает, а изменяет непосредственно сам объект последовательности x.

>>> import random
>>> lst = list(range(1, 50, 6))
>>> random.shuffle(lst)
>>> lst
# [31, 1, 49, 19, 7, 37, 25, 13, 43]

Функция random.shuffle() способна работать только с изменяемыми последовательностями, такими как списки, т.е. получить перестановку из строки или кортежа не получится. Для перемешивания неизменяемых последовательностей можно использовать функцию random.sample(x, k=len(x)) как показано ниже в примере.

Необязательный параметр random принимает имя функции которая выдает случайные числа с плавающей точкой в диапазоне [0.0, 1.0], с единственным условием - данная функция не должна принимать параметры. По умолчанию это функция random.random():

>>> import random
>>> lst = [1, 2, 3, 4]
>>> random.shuffle(lst, random.random)
>>> lst
# [2, 3, 4, 1]

Внимание! Необязательный аргумент random устарел с версии Python 3.9 и будет удален в версии 3.11.

Пример перемешивания последовательности.

Например, получить перестановку элементов списка, другими словами перемешать, можно как-то так:

>>> import random
# получаем список цифр от 0 до 8
>>> x = list(range(0,9))
# список `x` перемешивается "на месте"
# т.е. новый список не возвращается
>>> random.shuffle(x)
# [4, 6, 0, 7, 2, 3, 1, 8, 5]

Что бы перемешать неизменяемую последовательность (строку, кортеж), ее необходимо преобразовать в список:

# преобразуем строку в список букв
>>> x = list('абракадабра')
>>> random.shuffle(x)
# ['а', 'а', 'к', 'б', 'р', 'а', 'р', 'а', 'б', 'а', 'д']

# преобразуем полученный список обратно в строку
>>> ''.join(x)
# 'аакбрарабад'

или воспользоваться функцией random.sample().

>>> import random
>>> x = 'абракадабра'
>>> random.sample(x, len(x))
# ['р', 'к', 'а', 'д', 'а', 'б', 'а', 'р', 'а', 'б', 'а']