Dictionary project

Ben C spamspam at spam.eggs
Sun Mar 12 00:26:54 CET 2006

On 2006-03-11, Michael Spencer <mahs at telcopartners.com> wrote:
> brandon.mcginty at gmail.com wrote:
>> Hi All,
>> First, I hope this post isn't against list rules; if so, I'll take note in
>> the future.
>> I'm working on a project for school (it's not homework; just for fun).
>> For it, I need to make a list of words, starting with 1 character in length,
>> up to 15 or so.
>> It would look like:
>> A B C d E F G ... Z Aa Ab Ac Ad Ae Aaa Aab Aac

This is really "permutations" you're trying to work out I think. Python
generators are quite good for this kind of thing.

This works, but isn't especially pretty:

import string

def letters():
	while 1:
		for char in string.lowercase:
			yield char
		yield None

def count(n):
	digits = [letters() for i in range(n)]
	s = [d.next() for d in digits]

	def output():
		print string.join(reversed(s), "")


	while 1:
		i = 0
		while 1:
			s[i] = digits[i].next()
			if s[i] is not None: break
			s[i] = digits[i].next()

			i += 1
			if i == n: return


Obviously you can call count with any number, and if you just change
letters() to yield members of some other set you can make permutations
of different things.

I think 15 is going to give you rather a lot of permutations though.
1677259342285725925376 to be precise. You might have to wait a rather
long time.

More information about the Python-list mailing list