how to refactor nested for loop into smaller for loop assume each of them independent?

Alain Ketterlin alain at universite-de-strasbourg.fr.invalid
Sat Oct 8 07:47:26 EDT 2016


meInvent bbird <jobmattcon at gmail.com> writes:

> how to refactor nested for loop into smaller for loop assume each of them independent?
>
> because memory is not enough
>
> for ii in range(1,2000):
>  for jj in range(1,2000):
>   for kk in range(1,2000):
>     print run(ii,jj,kk)

n = 0
while n < 2000*2000*2000:
    ii = n // (2000*2000)
    jj = ( n % (2000*2000) ) // 2000
    kk = n % 2000
    run(ii,jj,kk)
    n += 1

or:

for n in xrange(2000*2000*2000):
    ii,rr = divmod(n,2000*2000)
    jj,kk = divmod(rr,2000)
    run(ii,jj,kk)

(I think CPython wll fold the constants, but I haven't checked).

Are you sure this is your (real) problem?

-- Alain.



More information about the Python-list mailing list