1298 votos

¿Cómo puedo seleccionar aleatoriamente un elemento de una lista usando Python?

Digamos, como ejemplo, tengo la lista siguiente:

foo = ['a', 'b', 'c', 'd', 'e']

¿Cuál es el mejor camino para recuperar un elemento al azar de esta lista?

2129voto

Pēteris Caune Puntos 13662
import random

foo = ['a', 'b', 'c', 'd', 'e']
print(random.choice(foo))

125voto

Juampi Puntos 971

En caso de que usted también necesita el índice:

foo = ['a', 'b', 'c', 'd', 'e']
from random import randrange
random_index = randrange(0,len(foo))
print foo[random_index]

27voto

antitrust Puntos 4853

Propongo una secuencia de comandos para extracción al azar de seguridad de los elementos de una lista hasta que se vacíe:

Mantener un set y eliminar levantados al azar elemento (con choice) hasta que la lista está vacía.

s=set(range(1,6))
import random

while len(s)>0:
  s.remove(random.choice(list(s)))
  print(s)

Tres carreras de dar tres respuestas diferentes:

>>> 
set([1, 3, 4, 5])
set([3, 4, 5])
set([3, 4])
set([4])
set([])
>>> 
set([1, 2, 3, 5])
set([2, 3, 5])
set([2, 3])
set([2])
set([])

>>> 
set([1, 2, 3, 5])
set([1, 2, 3])
set([1, 2])
set([1])
set([])

10voto

Aedil Puntos 434
import random
random_item = random.choice(foo)

Poco más de python el modo de hacerlo

6voto

Janek Olszak Puntos 328

si usted necesita el índice sólo tiene que utilizar:

import random
foo = ['a', 'b', 'c', 'd', 'e']
print int(random.random() * len(foo))
print foo[int(random.random() * len(foo))]

random.choice hace lo mismo:)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: