Метод sample модуля random - случайная выборка элементов из последовательности на Python
Метод 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
не предусмотрена возможность брать выборку
из множества.