Рубрики
Без рубрики

Как случайным образом выбрать элементы из списка в Python

В этой статье мы рассмотрим *как случайным образом выбирать элементы из списка в Python* – как единичные случайные элементы, так и множественные элементы – с повторением и без повторения.

Автор оригинала: Guest Contributor.

Вступление

Выбор случайного элемента или значения из списка является обычной задачей – будь то рандомизированный результат из списка рекомендаций или просто случайное приглашение.

В этой статье мы рассмотрим как случайным образом выбирать элементы из списка в Python . Мы рассмотрим извлечение как единичных случайных элементов, так и извлечение нескольких элементов – с повторением и без повторения.

Выбор Случайного Элемента Из Списка Python

Наиболее интуитивным и естественным подходом к решению этой задачи является генерация случайного числа, которое действует как индекс для доступа к элементу из списка.

Чтобы реализовать этот подход, давайте рассмотрим некоторые методы генерации случайных чисел в Python: random.randint() и random.randrange() . Мы можем дополнительно использовать random.choice() и предоставить итерацию, которая приводит к тому, что случайный элемент из этой итерации возвращается обратно.

Использование random.randint()

random.randint(a, b) возвращает случайное целое число между a и b включительно.

Нам понадобится случайный индекс в диапазоне 0 to len(list)-1 , чтобы получить случайный индекс элемента в списке:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])

Запуск этого кода несколько раз дает нам:

e
c
f
a

Использование random.randrange()

random.randrange(a) – это еще один метод, который возвращает случайное число n такое, что 0 < a :

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])

Запуск этого кода несколько раз приведет к чему-то вроде:

f
d
d
e

As random.randrange(len(letters)) возвращает случайно сгенерированное число в диапазоне 0 чтобы len(letters) - 1 , мы используем его для случайного доступа к элементу в letters , как и в предыдущем подходе.

Этот подход немного проще предыдущего, просто потому, что мы не указываем начальную точку, которая по умолчанию равна 0 .

Использование random.choice()

Теперь еще лучшим решением, чем последнее, было бы использование random.choice () , поскольку именно эта функция предназначена для решения этой проблемы:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.choice(letters))

Выполнение этого несколько раз приводит к:

b
e
e
f
e

Выбор Нескольких Случайных Элементов Из Списка Python

Использование random.sample()

Первый метод, который мы можем использовать для случайного выбора нескольких элементов, – это random.sample() . Он производит образец, основанный на том, сколько образцов мы хотели бы наблюдать:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.sample(letters, 3))

Это возвращает список:

['d', 'c', 'a']

Этот метод выбирает элементы без замены, то есть он выбирает без дубликатов и повторений.

Если мы запустим это:

print(random.sample(letters, len(letters)))

Поскольку он не возвращает дубликаты, он просто вернет весь наш список в рандомизированном порядке:

['a', 'e', 'c', 'd', 'f', 'b']

Использование случайных вариантов.()

Аналогично предыдущей функции, random.choices() возвращает список случайно выбранных элементов из заданной итерации. Однако он не отслеживает выбранные элементы, поэтому вы также можете получить дубликаты элементов:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.choices(letters, k=3))

Это возвращает что-то вроде:

['e', 'f', 'f']

Кроме того, если мы побежим:

print(random.choices(letters, k = len(letters)))

Он может вернуть что-то вроде:

['d', 'e', 'b', 'd', 'd', 'd']

random.choices возвращает a k -размерный список элементов, выбранных случайным образом с заменой.

Этот метод также может быть использован для реализации взвешенных случайных выборов, которые вы можете изучить далее в официальной документации Python .

Вывод

В этой статье мы рассмотрели несколько способов извлечения одного или нескольких случайно выбранных элементов из списка в Python.

Мы получили доступ к списку случайных индексов с помощью randint() и randrange() , но также получили случайные элементы с помощью choice() и sample() .