Метод sample модуля random
Метод sample модуля random
возвращает случайную выборку элементов из
последовательности. В первом параметре
метода указываем последовательность, во
втором параметре - количество элементов,
которые мы хотим выбрать случайным образом.
В третьем необязательном именованном
параметре k можем задать список
элементов для повтора. Это позволяет
повысить вероятность выборки заданных
элементов. Обратите внимание на то, что
третий параметр метода добавлен только
начиная с версии Python 3.9.
Синтаксис
pythonimport random
random.sample(последовательность, количество элементов, [k=повтор])
Пример
Давайте получим случайные три элемента из списка:
pythonlst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Результат выполнения кода:
python[2, 1, 5]
Пример
Давайте также попробуем взять выборку случайных элементов из кортежа:
pythontpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Результат выполнения кода:
python[3, 2]
Пример
Также можно выбирать элементы из
последовательности, которую генерирует
функция range:
pythonprint(random.sample(range(0, 10), 3))
Результат выполнения кода:
python[0, 8, 9]
Пример
Теперь давайте возьмем список и с помощью
параметра counts назначим повторы
для каждого элемента из списка. В нашем
случае, пусть первый элемент повторится
два раза, второй - три, а третий - четыре
раза. Также необходимо указать имя параметра
k для вывода количества элементов:
pythonlst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Данный код эквивалентен следующему:
pythonlst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # фактически такой список
print(random.sample(lst, 3))
Пример
Теперь давайте попробуем взять элементы из множества:
pythonst = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
Нам вернется следующая ошибка:
error[5, 2]
DeprecationWarning: Sampling from a set deprecated
since Python 3.9 and will be removed in a subsequent version.
print(random.sample(st, 2))
Это связано с тем, что с версии Python
3.9 не предусмотрена возможность
брать выборку из множества.