Ray wrote: > I just wrote a short script that generates look and say sequence. What > do you Python guys think of it? Too "Java-ish"?
Yes, but that's beside the point. :) I think your basic design was sound enough for this application (presumably this isn't something that needs to run at high speed). I found it a little hard to understand what was going on. Part of this was due to variable and function naming choices. Converting between strs and ints all the time is confusing too. I think this version might be a little easier to understand, and describe() should work for any string, not just integers. I think your original version does as well: def describe(string): last_char = "" last_count = "" res = [] for char in string: if char == last_char: last_count += 1 else: res.extend([str(last_count), last_char]) last_char = char last_count = 1 res.extend([str(last_count), last_char]) return "".join(res) def describe_generator(start, count): string = str(start) for index in xrange(count): yield string string = describe(string) print list(describe_generator(1, 30)) As requested, here's a more concise, but difficult to understand version of describe() using regexes: import re re_describe = re.compile(r"(.)\1*") def describe(string): runs = re_describe.finditer(str(string)) return "".join("".join([str(len(run.group(0))), run.group(0)[0]]) for run in runs) While it is fewer lines of code, it's not as easy to see what this *thing* does immediately upon looking at it. So I'd try to avoid this version, really. -- Michael Hoffman -- http://mail.python.org/mailman/listinfo/python-list