В этом уроке по Python, мы рассмотрим функцию shuffle()
из встроенного модуля random. Данная функция перемешивает случайным образом изменяемую последовательность.
Синтаксис:
import random
random.shuffle(x, random)
Аргументы:
x
- изменяемая последовательность, только: список.random
- функция, которая выполняет случайное перемешивание, является необязательной. Данный аргумент будет удален в Python 3.11, т.к он устарел в версии 3.9.
Функция shuffle()
перемешивает последовательность сразу на месте, не возвращая никаких значений, для нее не нужно создавать отдельную переменную.
Необязательный параметр random принимает имя функции, которая производит случайные числа с плавающей запятой в диапазоне от 0.0, 1.0, с единственным условием — эта функция не должна принимать параметры. По умолчанию используется функция random.random():
Примеры:
import random
# Список с числами
random_list = [1, 2, 3, 4, 5]
# Перемешиваем список
random.shuffle(random_list)
# Выводим информацию
print(random_list)
Результат:
>>> [5, 4, 1, 2, 3]
Примечание: Если мы передадим не список в функцию, то получим ошибку, например передав множество, ошибка будет следующая: TypeError: 'set' object is not subscriptable
Ещё примеры:
import random
# Список с числами range
random_list = list(range(10, 20))
# Перемешиваем список
random.shuffle(random_list)
# Выводим информацию
print(random_list)
Результат:
>>> [19, 10, 16, 15, 11, 12, 13, 17, 14, 18]
Чтобы перемешать строку, кортеж, множество - их нужно преобразовать в список.
import random
# Список с числами range
random_set = set(range(10, 20))
# Тип
print(random_set, type(random_set))
# Преобразование в список
random_set = list(random_set)
# Перемешиваем список
random.shuffle(random_set)
# Выводим информацию
print(random_set, type(random_set))
Результат:
>>> {10, 11, 12, 13, 14, 15, 16, 17, 18, 19} <class 'set'>
>>> [15, 19, 12, 11, 13, 18, 10, 16, 17, 14] <class 'list'>
Со строками, также необходимо преобразование:
import random
# Строку переводим в список
text_list = list('notehunter')
# Смешиваем
random.shuffle(text_list)
# Преобразуем обратно в строку
text_list = ''.join(text_list)
# Выводим информацию
print(text_list)
Результат:
>>> eutehnrton
Также есть функция random.sample()
, которая работает с другими последовательностями, ее рассмотрим в другом уроке.