Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/10/2014, 11:01
Koan
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 11 meses
Puntos: 9
Respuesta: Compresión y filtrado de una lista con random.randint

Ok. Sigo probando, pero ahora me da error de sintaxis. Con listas comprimidas he realizado cosas básicas. Y claro, quería aprender bien lo que se puede y no se puede hacer.

Código Python:
Ver original
  1. import random
  2. filtro = [1,2,3,4]
  3. filtrada = [i for i in range(10) for j in range(random.randint(1,20)) if not j in filtro]

Pero me sale esto:

Código Python:
Ver original
  1. >>> filtrada
  2. [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9]

Lo que yo quiero es que me dé números aleatorios y que no sean el 1,2,3,4. Osea, de la lista filtro.

Resumiendo...

Me gustaría saber si esto se puede hacer con una lista comprimida/filtrada:

Código Python:
Ver original
  1. import random
  2. filtro = [1,2,3,4]
  3. for i in range(10):
  4.     a = random.randint(1,20)
  5.     if not a in filtro:
  6.         filtrada.append(a)

Si ejecutáis el código, nunca sale el 1,2,3 o 4. Que es lo que quiero.

Última edición por Koan; 19/10/2014 a las 11:26