intervalo de compreensão em python para loop

O programa abaixo está encontrando números primos em um determinado intervalo. para a parte de compreensão da lista noprimes, por que temos 3 parâmetros no intervalo?

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
primes = [x for x in range(2, 50) if x not in noprimes]
print prime

e o que eu estou fazendo ai?