Метод sample модуля random
Метод sample
модуля random
возвращает случайную выборку элементов из
последовательности. В первом параметре
метода указываем последовательность, во
втором параметре - количество элементов,
которые мы хотим выбрать случайным образом.
В третьем необязательном именованном
параметре k
можем задать список
элементов для повтора. Это позволяет
повысить вероятность выборки заданных
элементов. Обратите внимание на то, что
третий параметр метода добавлен только
начиная с версии Python 3.9
.
Синтаксис
import random
random.sample(последовательность, количество элементов, [k=повтор])
Пример
Давайте получим случайные три элемента из списка:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Результат выполнения кода:
[2, 1, 5]
Пример
Давайте также попробуем взять выборку случайных элементов из кортежа:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Результат выполнения кода:
[3, 2]
Пример
Также можно выбирать элементы из
последовательности, которую генерирует
функция range
:
print(random.sample(range(0, 10), 3))
Результат выполнения кода:
[0, 8, 9]
Пример
Теперь давайте возьмем список и с помощью
параметра counts
назначим повторы
для каждого элемента из списка. В нашем
случае, пусть первый элемент повторится
два раза, второй - три, а третий - четыре
раза. Также необходимо указать имя параметра
k
для вывода количества элементов:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Данный код эквивалентен следующему:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # фактически такой список
print(random.sample(lst, 3))
Пример
Теперь давайте попробуем взять элементы из множества:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
Нам вернется следующая ошибка:
[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
не предусмотрена возможность
брать выборку из множества.