[Tutor] Problems with iterations and breaking loops

Karjer Jdfjdf karper12345 at yahoo.com
Wed Mar 17 21:09:58 CET 2010


Thank you all for the input. 

I've not been clear in my original question. For each value in the range (in example 10) I have to perform calculations with the values in the tuple (in example 3). This makes 30 calculations in total.

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.

Solution 1 works, but the double for-statements seem problematic to me because if I have to add a 3rd or 4th etc the code becomes unreadable. 

I've tried to put it in a def, but:
* Solution 2 is wrong because it only does part of the calculations
* Solution 3 works, but returns it 10 times, so something is wrong with it!

I gues I should go for solution 1, but I prefer one of the def solutions ( 2 or 3) because if I have to add more variables I get a very nested chunk of code (which I don't understand anymore in a month from now). 



list_of_tuples = [(90629, 4644.91), (90706, 4617.87), (90729, 4709.50)]

n = 100
nmax = 110


def perform_calculations1(n, nmax, value, list_of_tuples, ):
    # this gives totally wrong results
    something = []
    for i2 in xrange(n, int(nmax+1)):
        for t in list_of_tuples:
            v1 = t[0]
            v2 = t[1]
            something = str(i2) + "\tdoes something for\t" + str(v2)    
    return something

def perform_calculations2(n, nmax, value, list_of_tuples, ):
    #this works too good. It returns 10 times the correct 30 values
    something = []
    for i2 in xrange(n, int(nmax+1)):
        for t in list_of_tuples:
            v1 = t[0]
            v2 = t[1]
            something.append(str(i2) + "\tdoes something for\t" + str(v2))
    return something




print "\n\nSolution 1"
for i in xrange(n, int(nmax+1)):
    #returns good results
    for t in list_of_tuples:
        val1 = t[0]
        val2 = t[1]
        print "do stuff with\t" + str(val1) + '\t' + str(val2) + \
              '\tfor range\t' + str(i)


print "\n\nSolution 2"
for i in xrange(n, int(nmax + 1)):
    #returns wrong results
    result = perform_calculations1(n, nmax, i, list_of_tuples, )
    print result

print "\n\nSolution 3"
for i in xrange(n, int(nmax + 1)):
    print "\n"
    #returns good results, but gives it back 10 times!!!
    result = perform_calculations2(n, nmax, i, list_of_tuples, )
    for r in result:
        print r






      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100317/94fa709c/attachment-0001.html>


More information about the Tutor mailing list