> >>>for i in range(len(what)): > ele = split(what[i],'\t') > cor1 = ele[0]
It will be faster if you stop using len() in your for loops! for item in what: > for k in range(len(my_report)): > cols = split(my_report[k],'\t') > cor = cols[0] And again: for item in my_report: > if cor1 == cor: > print cor+'\t'+ele[1]+'\t'+cols[1]+'\t'+cols[2] And it will be faster if you stop adding the strings together. Each addition creates a new string. Use the formatting operation instead: print "%s\t%s\t%s\t%s" % (cor,ele[1],cols[1],cols[2]) The other thing to consider is using a dictionary. You are effectively using the cor bit as a key, so if instead of creating two lists ytou create two dictionaries you will avoid all the splitting stuff and have instant access: for key in what.keys(): try: print "%s\t%s\t%s\t%s" % (key, what[key][0], report[key][0],report[key][1]) except KeyError: pass # or print an error message By missing out a loop(*) and some splits it should speed up significantly for the cost of some small added complexity in building the dictionaries in the first case. (*)In fact 3 loops because you aren't doing len() which effectively loops over the collection too. HTH, Alan G Author of the Learn to Program web tutor http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor