Steve Holden wrote: > James Stroud wrote: > >> Rob Cowie wrote: >> >>> Hi all, >>> >>> I wish to generate a sequence of the form 'aaa', 'aab', aac'.... 'aba', >>> 'abb', 'abc' etc. all the way to 'zzz'. >>> >>> How would you construct a generator to acheive this? >>> >>> A simple, working but somewhat inelegant solution is... >>> >>> alpha = ['a','b','c','d'] #shortened for brevity >>> alpha2 = ['a','b','c','d'] >>> alpha3 = ['a','b','c','d'] >>> >>> def generator(): >>> for char in alpha: >>> for char2 in alpha2: >>> for char3 in alpha3: >>> yield char + char2 + char3 >>> >>> x = generate() >>> x.next() # etc, etc, etc, >>> >> >> >> A touch more efficient: >> >> import string >> alpha = string.lowercase >> >> def generator(choices, length): >> length -= 1 >> for a in choices: >> if length: >> for g in generator(choices, length): >> yield a + g >> else: >> yield a >> >> for a in generator(alpha, 3): >> print a >> > Frankly, this doesn't seem more elegant than the original, particularly > once it uses a single string. > > regards > Steve
Are you sure you understand what each do? -- James Stroud UCLA-DOE Institute for Genomics and Proteomics Box 951570 Los Angeles, CA 90095 http://www.jamesstroud.com/ -- http://mail.python.org/mailman/listinfo/python-list