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

Введение Выбор случайного элемента или значения из списка - обычная задача - будь то случайный результат из списка рекомендаций или просто случайный запрос. В этой статье мы рассмотрим, как случайным образом выбирать элементы из списка в Python. Мы рассмотрим извлечение как единичных случайных элементов, так и извлечение нескольких элементов - с повторением и без. Выбор случайного элемента из списка Python Самый интуитивно понятный и естественный подход к решению этой проблемы - это t

Вступление

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

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

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

Самый интуитивно понятный и естественный подход к решению этой проблемы

  • создать случайное число, которое действует как индекс для доступа к элементу из списка.

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

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

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

Нам понадобится случайный индекс в диапазоне от 0 до 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 <= n < a :

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

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

 f 
 d 
 d 
 e 

Поскольку 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 ()

Подобно предыдущей функции, 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 возвращает k размерный список элементов, выбранных случайным образом с заменой.

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

Заключение

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

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus