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

Функция 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
# перестановка букв строки случайным образом
>>> x = 'кукуруза'
>>> s = random.sample(x, k=len(x))
# полученный перемешанный список 
# символов преобразуем в строку
>>> ''.join(s)
# 'зуруакук'

# перестановка элементов кортежа случайным образом
>>> x = (1, 8, 15, 22, 29, 36, 43)
>>> t = random.sample(x, k=len(x))
# полученный перемешанный список 
# элементов преобразуем в кортеж
>>> tuple(t)
# (43, 29, 22, 1, 36, 15, 8)