Dictionary project
Michael Spencer
mahs at telcopartners.com
Sat Mar 11 17:27:05 EST 2006
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
>
> Etcetera.
>
> I've looked on Google, and on the python lists at python.org, and haven't
> found any code that I can adapt.
> I've also tried to adapt some code from Perl, but not knowing the language
> very well, I wasn't very successful.
> If there is adaptable code on the internet that I've missed, please let me
> know, and I'll go on my marry way in search of it.
>
> Any help would be appreciated.
>
> Thanks Much,
> Brandon McGinty
> Brandon.mcginty at gmail.com
>
Something to adapt:
alphabet = "abcd"
def allwords(maxlength = 4):
def wordgen(outer):
for partial in outer:
yield partial
for letter in alphabet:
yield partial+letter
gen = alphabet
for length in range(maxlength-1):
gen = wordgen(gen)
return gen
>>> list(allwords())
['a', 'aa', 'ab', 'ac', 'ad', 'aa', 'aaa', 'aab', 'aac', 'aad', 'ab', 'aba',
'abb', 'abc', 'abd', 'ac', 'aca', 'acb', 'acc', 'acd', 'ad', 'ada', 'adb',
'adc', 'add', 'aa', 'aaa', 'aab', 'aac', 'aad', 'aaa', 'aaaa', 'aaab', 'aaac',
'aaad', 'aab', 'aaba', 'aabb', 'aabc', 'aabd', 'aac', 'aaca', 'aacb', 'aacc',
'aacd', 'aad', 'aada', 'aadb', 'aadc', 'aadd', 'ab', 'aba', 'abb', 'abc', 'abd',
'aba', 'abaa', 'abab', 'abac', 'abad', 'abb', 'abba', 'abbb', 'abbc', 'abbd',
'abc', 'abca', 'abcb', 'abcc', 'abcd', 'abd', 'abda', 'abdb', 'abdc',
...
'dcdc', 'dcdd', 'dd', 'dda', 'ddb', 'ddc', 'ddd', 'dda', 'ddaa', 'ddab', 'ddac',
'ddad', 'ddb', 'ddba', 'ddbb', 'ddbc', 'ddbd', 'ddc', 'ddca', 'ddcb', 'ddcc',
'ddcd', 'ddd', 'ddda', 'dddb', 'dddc', 'dddd']
If you want the list sorted by length, as in your example:
>>> sorted(_, key=len)
['a', 'b', 'c', 'd', 'aa', 'ab', 'ac', 'ad', 'aa', 'ab', 'ac', 'ad', 'aa', 'ab',
'ac', 'ad', 'ba', 'bb', 'bc', 'bd', 'ba', 'bb', 'bc', 'bd', 'ba', 'bb', 'bc',
'bd', 'ca', 'cb', 'cc', 'cd', 'ca', 'cb', 'cc', 'cd', 'ca', 'cb', 'cc', 'cd',
'da', 'db', 'dc', 'dd', 'da', 'db', 'dc', 'dd', 'da', 'db', 'dc', 'dd', 'aaa',
'aab', 'aac', 'aad', 'aba', 'abb', 'abc', 'abd', 'aca', 'acb', 'acc', 'acd',
'ada', 'adb', 'adc', 'add', 'aaa', 'aab', 'aac', 'aad', 'aaa', 'aab', 'aac',
'aad', 'aba', 'abb', 'abc', 'abd', 'aba', 'abb', 'abc', 'abd', 'aca',
HTH
Michael
More information about the Python-list
mailing list