Most elegant way to generate 3-char sequence
James Stroud
jstroud at ucla.edu
Fri Jun 9 18:11:36 EDT 2006
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,
>
import string
alpha = string.lowercase
def generator(choices, length):
for a in choices:
if length > 1:
for g in generator(choices, length-1):
yield a + g
else:
yield a
for a in generator(alpha, 3):
print a
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/
More information about the Python-list
mailing list