En Tue, 23 Oct 2007 20:29:53 -0300, Looney, James B <[EMAIL PROTECTED]> escribió:
> Regardless of whether I run this from IRIX or Windows, I get the same > results. I'm expecting the string "ab" to be displayed twice. Instead, > the second time, I get ABB. If I add a 3rd print line, I'll get ABBB. > I'm now stuck trying to understand what's going on. It seems like > there's an overflow somewhere since it's overwriting my dictionary for > the letter 'a', but I don't know how it's doing it. > ######## > def getBanner( self, inputStr ): > retVal = [] > for c in inputStr: > banneredCharList = self.myBannerDict[ c ] > if( 0 == len( retVal ) ): > retVal = banneredCharList > else: > for i in range( len( banneredCharList ) ): > retVal[ i ] += banneredCharList[ i ] banneredCharList is a list, taken from myBannerDict. retval = banneredCharList does not make a copy, just points the name retval to the list. Later, retval[i] += ... is modifying the list, which is always the same, so you are modifying myBannerDict actually. Try using: retVal = banneredCharList[:] -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list