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), "")

	output()

	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
		output()

count(3)

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