[Tutor] Problems with iterations and breaking loops

Alan Gauld alan.gauld at btinternet.com
Thu Mar 18 09:50:54 CET 2010


"Karjer Jdfjdf" <karper12345 at yahoo.com> wrote

> In reality I have to do this for a much larger dataset 
> (eg 10000 range * 100000 = a lot), so the for v1, v2 in 
> list_of_tuples doesn't work because it is too large for it.

What does the size have to do with it?
v1,v2 in list_of_tuples will only unpack one tuple at a 
time regardless of how big the list is.

> I've tried to put it in a def, but:

Take the outer loop out of the function.
The point of functions is to break the problem down into 
manageable chunks.

You should probably have 3 functions here:
1) to do the calculation on a single element
2) to apply function(1) to each item in the tuple list
3) a function to apply function(") from min to max

That makes your code look like

def function3(min,max)
     for n in range(min,max):
          function2(val, t_lst)

def function2((val, tuples)
      for tuple in tuples:
           function3(val,tuple)

def function(val,pair)
      # whatever calc you need

That way you can test each function in turn and 
stop the nested loops from dominating the logic.

def perform_calculations2(n, nmax, value, list_of_tuples, ):
#this works too good. It returns 10 times the correct 30 values

Because you have repeated the outer loop inside the function. 
Get rid of it.

something = []
for i2 in xrange(n, int(nmax+1)):

And please stop calling int() when the values are already ints.


for t in list_of_tuples:
v1 = t[0]
v2 = t[1]
something.append(str(i2) + "\tdoes something for\t" + str(v2))
return something

The above is all you need in your function.

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list