Пайтон. Извлекать возразило случайным образом списка

Проблема состоит в том, что у меня есть список "l" которой я хочу выбрать случайную статью несколько раз, не повторяя этого, и не, как делание этого. Какая-то подсказка?

import random

l = ["a", "b", "c", "d"]

sel1 = random.choice(l)

До там хорошо, но сейчас я хочу определить один "sel2" что был элементом случайным образом "l" но отличный "sel1". И так мочь продолжать определять один "sel3" отличный "sel1" и "sel2".

Спасибо заранее =)

6
задан 20.06.2016, 03:19
4 ответа

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

l2 = l[:]  # copia de la lista
random.shuffle(l2)

sel1, sel2, sel3 = l2[:3]

или проще, используй random.sample:

sel1, sel2, sel3 = random.sample(l, 3)
3
ответ дан 24.11.2019, 14:07

PodrГ-схвати давать ему другой подход твоей проблеме: Вїpor quГ© не приводить в беспорядок список и доставать каждый элемент той же самой?

funciГіn shuffle позволяет тебе приводить в беспорядок элементы в списке. Смотри этот пример:

from random import shuffle

list = ["a", "b", "c", "d"]
shuffle(list) # list -> ["c", "a", "d", "b"]

sel1 = list[0] # "c"
sel2 = list[1] # "a"
....

типов Привета.

2
ответ дан 24.11.2019, 14:07

Ты можешь пытаться с этой pequeГ±a funciГіn:

import random
def random_sin_repetir(lista):
    for _ in range(0,len(lista)):
        result = random.choice(lista)
        yield result
        lista.remove(result)

ты Можешь подтверждать результаты с:

lista = ["a", "b", "c", "d"]
[i for i in random_sin_repetir(lista)]

['в', 'c', 'b', 'd']

lista = ["a", "b", "c", "d"]
[i for i in random_sin_repetir(lista)]

['b', 'd', 'c', 'в']

0
ответ дан 24.11.2019, 14:07

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

Возможное решение, чтобы удалять повторенные элементы, могло бы быть:

lista_original = list(set(lista_original))

Другие возможные формы: http://blog.elcodiguero.com/python/eliminar-objetos-repetidos-de-una-lista.html

0
ответ дан 24.11.2019, 14:07

Теги

Похожие вопросы