Lee Cullens wrote: > Well, I've tried both and can't produce what I was doing with the for > construct. > With a list pl = ['a', 'b', 'c', 'd'] of the path components I'm > trying to add justified non repeated path elements, say pl[2] and pl [3] > to csvline so that csvline would end up '"",'*x plus '"c","d",' > > >>> pl = ['a', 'b', 'c'] > >>> csvl = '"",' > >>> csvl += '"'.join(pl[0:2]) + '",' > >>> csvl > '"",a"b",' > > which is intended to be '"","a","b",'
OK, let's try to get this right. Given a list of strings and a divider string, join() returns the strings from the list 'joined' by the divider string. For example, >>> pl = ['a', 'b', 'c'] >>> '","'.join(pl) 'a","b","c' The syntax for this takes a little getting used to; join() is actually a string method; you call it on the divider string and pass it the list of strings to be joined. To make a list of quoted, comma separated values, you also need initial and final quotes: >>> '"' + '","'.join(pl) + '"' '"a","b","c"' In your example you need '","'.join(pl[0:2]) > Saving one line of code in this module doesn't mean much, but if it > were a efficiency in processing it would? Conventional wisdom is that it is more efficient to use the join method. More enlightened wisdom says, don't optimize until you know you have a problem, and the only way to know what is fastest in your program with your data is to test. And of course working code always beats broken code :-) I did some experiments with these alternatives and concluded that if the length of the resulting string is less than about 500-800, the version using += is faster than the one using join(): http://www.pycs.net/users/0000323/weblog/2004/08/27.html So, it is good to know about join(), but write the code the way that is clearest to you. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor