On 28/05/13 13:54, Tim Hanson wrote:
Okay, so I made it to FOR loops in the Lutz book. A couple of days ago I was
helped here with the .join method for creating strings from lists or tuples of
strings. I got to wondering if I could just, for the sake of learning, do the
same thing in a FOR loop, since that's today's chapter:
x=0; ham=''; b=['s','p','a','m'] #or, b=('s','p','a','m')
for t in b:
ham=ham+b[x]
print(ham);x+=1
There's no need to manually count the index that you are looking at, and no
need to manually look up the character using b[x]. That's what the for-loop is
already doing. (Also, a good habit to get into is using *meaningful* variable
names, not one-letter cryptic names.)
ham = ''
for char in ['s', 'p', 'a', 'm']:
ham = ham + char
print(ham)
But wait, there's more! There's no need to split the string "spam" up into
characters yourself, since strings can be iterated over too:
ham = ''
for char in 'spam':
ham = ham + char
print(ham)
However, a word of warning: although you *can* assemble a new string character
by character like that, you should not, because it risks being very slow.
*Painfully* slow. If you want to hear the details, please ask, but it risks
being slow for much the same reason as the infamous Shlemiel the Painter
Algorithm:
http://www.joelonsoftware.com/articles/fog0000000319.html
So while it is okay to assemble strings using + if there are only a few pieces,
you should avoid doing it whenever there is a chance of there being many
pieces. The standard method for assembling a string from a collection of
substrings is to do it in one go, using the join method, instead of piece by
piece:
pieces = ['NOBODY', 'expects', 'the', 'Spanish', 'Inquisition!']
mystring = ' '.join(pieces) # join with a single space between each piece
print(mystring)
The joiner can be any string you like, including the empty string '', it
doesn't have to be a space.
--
Steven
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor