Veo varios errores:
1. No son listas comprimidas, es
list comprehension, comprehension como
comprensión del verbo comprender y no comprimir.
2. Esto tiene sus pros y sus contras.
Código Python:
Ver originalfiltro = [1,2,3,10]
filtrada = [random.randint(1,20) for i in range(10) if not i in filtro]
Esto lo puedes reescribir como
Código Python:
Ver originalfiltro = [1,2,3,10]
filtrada = []
for i in range(10):
if not i in filtro:
filtrada(random.randint(1,20))
Como puedes ver no hay manera de determinar si `random.randint(1,20)` esta en tu lista de filtrados, al menos usando esta forma.
Puedes hacerlo igual de fácil usando map y filter.
Código Python:
Ver originalfiltrada = filter(lambda x: x not in filtro, map(lambda x: random.randint(1, 20), range(10)))
O usando generadores + comprensión de listas
Código Python:
Ver originalfiltrada = [j for j in (random.randint(1,20) for i in range(10)) if j not in filtro]
3. Tu segundo código lo puedes reescribir como:
Código Python:
Ver originalimport random
filtro = [1,2,3,4]
filtrada = []
for j in range(random.randint(1,20)):
for i in range(10):
if not j in filtro:
filtrada.append(i)
Como puedes ver, no tiene mucho sentido con lo que tratas de hacer.