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

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

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

Введение

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

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

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

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

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

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

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

import random

test_list = ["1", "2", "3", "4", "5", "6"]
random_index = random.randint(0, len(test_list) - 1)

print(test_list[random_index])

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

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

import random

test_list = ["1", "2", "3", "4", "5", "6"]
random_index = random.randrange(len(test_list))

print(test_list[random_index])

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

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

Использовании функции random.choice()

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

import random

test_list = ["1", "2", "3", "4", "5", "6"]

print(random.choice(test_list))

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

Без повторения элементов

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

import random

test_list = ["1", "2", "3", "4", "5", "6"]

print(random.sample(test_list, 3))

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

С повторением элементов

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

import random

test_list = ["1", "2", "3", "4", "5", "6"]

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

Заключение

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

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

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Аноним

    choices тоже нужно импортировать в начале

    Ответить
    1. Константин

      да

      import random

      Ответить
  2. Aleks

    Спасибо за статью с понятно изложенным содержанием. Очень помогла.

    Ответить
    1. Егор Егоров автор

      пожалуйста ! 🙂

      Ответить
  3. Julia

    Спасибо, нашла то, что искала.

    Ответить
    1. Егор Егоров автор

      Пожалуйста

      Ответить
  4. Hercules

    спасибо

    Ответить
    1. Егор Егоров автор

      Пожалуйста

      Ответить