In article <mailman.120.1357397255.2939.python-l...@python.org>, Chris Angelico <ros...@gmail.com> wrote:
> On Sun, Jan 6, 2013 at 1:30 AM, Roy Smith <r...@panix.com> wrote: > > In article <mailman.109.1357378077.2939.python-l...@python.org>, > > Chris Angelico <ros...@gmail.com> wrote: > > > >> result = "".join([x[int(x[0])+1:] for x in > >> ("0"+s).replace("-","+").split("+")]) > > > > That's exceedingly clever. But bordering on line noise. At the very > > least, I would break it up into a couple of lines to make it easier to > > understand (plus you can print out the intermediate values to see what's > > going on): > > > > chunks = ("0"+s).replace("-","+").split("+") > > result = "".join([x[int(x[0])+1:] for x in chunks] > > Sure. You can always split a one-liner to taste, doesn't much matter > where. Well, there are better and worse places to split things. Consider these three statements: result = f1().f2().f3().f4().f5() result = f1(f2.f3(f4().f5())) result = f1(f2(3(f4(f5())))) Same number of function calls, but the middle one is clearly the most difficult to understand. The reason is because the scan direction keeps changing. The first one is strictly left-to-right. The last one is strictly inside-to-outside. The middle one is all over the place. That's why I chose to split this where I did. It was where the scan direction changed. Readability matters. -- http://mail.python.org/mailman/listinfo/python-list