Nested loop

Bengt Richter bokr at
Wed Nov 30 23:41:26 CET 2005

On 30 Nov 2005 00:37:43 -0800, bonono at wrote:

>viewcharts wrote:
>> I am reading two text files comparing the values in one to the other,
>> this requires two loops. The problem is that when the inner loop is
>> finished, it never goes back into the loop. Any suggestions?
>> for refSymbol in symbols.readlines():
>>     for lookupSymbol in myfile.readlines():
>>         showme = lookupSymbol.split('\t')
>>         if showme[3] == refSymbol.strip():
>>             priceNew.write(refSymbol.strip()+" "+showme[10])
>As another poster said, you have "used up" the inner iterable in the
>first round, it is an iterable, just not like a list where you can use
>multiple times.
>Either turn it into a list(so you can reuse it) or better yet, turn it
>into a dict which would speed up the matching process. Either way, it
>better be done outside of the outer loop.
Yes, and unless there is an ordering requirement that can't be ignored or achieved
by sorting afterwards, symbols seems like it could be a set. E.g., (untested)

    refSymbolSet = set(refSymbol.strip() for refSymbol in symbols)
    for showme in (lookupSymbol.split('\t') for lookupSymbol in myfile):
        if showme[3] in refSymbolSet:
            priceNew.write(showme[3]+" "+showme[10])

It would probably be more robust to check for blank lines and showme missing fields
and symbol duplicates also.

Bengt Richter

More information about the Python-list mailing list