Функция choice() модуля в Python, выбирает случайный элемент
Выбрать один элемент случайным образом из списка, строки, кортежа или range()
Синтаксис:
import random elem = random.choice(seq)
Параметры:
- seq — последовательность (строка, список и т.д.).
Возвращаемое значение:
- один случайный элемент последовательности seq .
Описание:
Функция random.choice() модуля random возвращает один случайный элемент из непустой последовательности seq .
Последовательность seq может быть неизменяемой (кортеж, строка и т.д.) или изменяемая (список). Функция random.choice() поддерживает диапазоны range() .
Если последовательность seq пуста, то поднимается исключение IndexError .
Неупорядоченные последовательности set() и frozenset() не поддерживаются. Множество set() / frozenset() сначала должно быть преобразовано в список или кортеж.
Пример выбора случайного символа из строки:
>>> import random # строка представляет собой неизменяемую # последовательность символов >>> line = 'abcdefg' # выбор случайного символа из строки `line` >>> random.choice(line) # 'f'
Пример выбор случайного элемента из списка:
>>> import random >>> lst = [1, 'a', 2, 'b', 3, 'c'] # выбор случайного элемента из списка `lst` >>> random.choice(lst) # '3'
Пример выбор случайного числа из диапазона:
>>> import random >>> rng = range(1, 90, 7) # выбор случайного элемента из диапазона `rng` >>> random.choice(rng) # 8 >>> random.choice(rng) # 29 >>> random.choice(rng) # 50
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Генерация случайного целого числа или байтов
- Генерация случайных вещественных чисел
- Функция choice() модуля , выбирает случайный элемент
- Функция random.choices(), выбирает несколько случайных элементов
- Функция shuffle() модуля random, перемешивает список
- Функция random.sample() модуля random
- Инициализация и состояние генератора
- Классы Random() и SystemRandom() модуля random
- Вероятностные распределения в модуле random Python
- Рецепты использования модуля random
- Функция binomialvariate() модуля random
Как выбрать случайный элемент из списка с исключением python
Первый вариант: Брать случайный индекс и «pop» нужный элемент.
>>> import random >>> array = [10, 11, 12, 13, 14, 15, 16] >>> array.pop(random.randrange(len(array))) 15 >>> array.pop(random.randrange(len(array))) 13 >>> array [10, 11, 12, 14, 16] >>>
Второй вариант: Перемешать список, и потом брать по порядку элементы. Или же по индексу.
>>> import random >>> array = [10, 11, 12, 13, 14, 15, 16] >>> random.shuffle(array) >>> for element in array: . print(element) . 13 16 12 11 15 14 10 >>> element1 = array[0] >>> element2 = array[1]
Отслеживать
ответ дан 7 авг 2022 в 13:41
Be3y4uu_K0T Be3y4uu_K0T
816 3 3 серебряных знака 10 10 бронзовых знаков
Тут есть несколько вариантов, можете выбирать какой удобно:
- Удаляем из исходного списка выбранный ранее элемент при помощи remove() :
mas = [sa, as, qw, re, bew, uf, yt] lv1 = random.choice(mas) mas.remove(lv1) # убираем из mas элемент, уже выбранный и помещённый в lv1 lv2 = random.choice(mas) # выборка из всех элементов, кроме lv1
- Создаём новый список, в который помещаем все элементы, кроме выбранного (положим, что все элементы уникальны) — это называется созданием списка через генератор:
mas = [sa, as, qw, re, bew, uf, yt] lv1 = random.choice(mas) mas1 = [elem for elem in mas if elem != lv1] # в новый список помещаем такие elem из старого списка, # которые не равны lv1 lv2 = random.choice(mas1) # выборка из нового списка mas1
Используем модуль Python random получая случайные значения с sample() и choice()
Для работы со случайными значениями в Python используется модуль random. Кроме получения числовых значений, используя этот модуль, мы можем получить как одно случайное значение из списка так и группу. Рассмотрим как можно реализовать эту задачу на примере нескольких методов, а так же sample() и choice().
Навигация по посту
- Получение одного случайного значения
- По индексу с randint()
- По индексу с randrange()
- Из списка с choice()
- sample()
- Перемешиваем словарь случайным образом
- choices()
Получение одного случайного значения
По индексу с randint()
randint(a, b) возвращает случайное число между ‘a’ и ‘b’ включительно. Мы можем это использовать в списках подставив 0, как указатель начала списка, и len(list) — 1, как указатель его конца:
from random import randint l = ['один', 'два', 'три'] r = l[randint(0, len(l)-1)]В случае со словарями вариантов больше. Например мы можем использовать метод ‘items()’ возвращающий список кортежей:
from random import randint d = data = list(d.items()) key,val = data[randint(0, len(d)-1)]По индексу с randrange()
from random import randrange lst = ['один', 'два', 'три'] r = lst[randrange(len(lst))]Пример получения такого результата из словаря:
from random import randrange dct = data = list(dct.keys()) # data хранит ['1', '2', '3'] key = data[randrange(len(data))]
Из списка с choice()
choice() — основной способ получения случайного значения из списка. В его случае мы не должны думать о его длине и индексах:
from random import choice lst = choice(['один', 'два', 'три'])Пример со словарем:
from random import randrange dct = data = choice(list(dct.items()))
Получение нескольких случайных значений
sample()
Метод sample(x, y) использует ‘x’ как массив и ‘y’ как число значений, которые вам необходимо вернуть. Возвращаемая группа не будет содержать дубликатов. Пример получения группы случайных значений со списком:
from random import sample lst = ['один', 'два', 'три'] r = sample(lst, 2)from random import sample dct = data = list(dct.items()) r = sample(data, 2)
Перемешиваем словарь случайным образом
Используя этот метод вы так же можете перемешать список указав всю его длину:
from random import sample l = ['один', 'два', 'три'] r = sample(lst, len(l))choices()
Так же группу значений можно вернуть с choices(list, k=count). Отличие этого метода от предыдущего в том, что он может взять один и тот же элемент из списка (т.е. не следит за дубликатами).
Пример со списком:
from random import choices lst = ['один', 'два', 'три'] r = choices(lst, k=2)from random import choices dct = data = list(dct.items()) r = choices(data, k=2)
Еще один пример разницы samle и choices:
from random import choices, sample lst = [1,2,3,4,5] print('Одно значение повторяется несколько раз: ', choices(lst, k=3)) print('Только уникальные: ', sample(lst, 3))Случайный выбор элементов из списка Python
В этом посте мы обсудим, как случайным образом выбрать элемент из списка в Python.
1. Использование random модуль
Стандартное решение для возврата случайного элемента из списка — это choice() функция из случайного модуля.
import random
if __name__ == ‘__main__’ :
nums = [ 1 , 2 , 3 , 4 , 5 ]
print ( random . choice ( nums ) )Для криптографически безопасных случайных элементов рассмотрите возможность переключения на random.SystemRandom класс, который генерирует случайные числа из источников, предоставленных ОС.
import random
if __name__ == ‘__main__’ :
nums = [ 1 , 2 , 3 , 4 , 5 ]
print ( random . SystemRandom ( ) . choice ( nums ) )Если вам нужно выбрать более одного элемента из последовательности случайным образом, используйте random.sample() вместо. Он возвращает новый список уникальных элементов, выбранных из заданного списка или последовательности.
import random
if __name__ == ‘__main__’ :
nums = [ 1 , 2 , 3 , 4 , 5 ]
print ( random . SystemRandom ( ) . sample ( nums , k ) )Наконец, вот простое решение, использующее random.randrange . Это часто бывает полезно, когда вам нужен индекс случайного элемента.
import random
if __name__ == ‘__main__’ :
nums = [ 1 , 2 , 3 , 4 , 5 ]
rIndex = random . randrange ( len ( nums ) )
print ( nums [ rIndex ] )2. Использование secrets модуль
Начиная с Python 3.6, вы должны использовать secrets модуль для обеспечения безопасности или криптографического использования по сравнению с генераторами псевдослучайных чисел из модуля random. Вы можете использовать secrets.choice() Функция для получения случайно выбранного элемента из списка.
