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)) # ['р', 'к', 'а', 'д', 'а', 'б', 'а', 'р', 'а', 'б', 'а']