I am trying to come up with a way to generate all possible unique strings from an alphabet of 20 characters where the order within the string doesn\'t matter, and the length
IIUC, you can simply use itertools.combinations_with_replacement
.
>>> list(map(''.join, combinations_with_replacement(["a","b","c"],2)))
['aa', 'ab', 'ac', 'bb', 'bc', 'cc']
>>> list(map(''.join, combinations_with_replacement(["a","b","c"],3)))
['aaa', 'aab', 'aac', 'abb', 'abc', 'acc', 'bbb', 'bbc', 'bcc', 'ccc']
>>> list(map(''.join, combinations_with_replacement(alphabet,4))) == orig(alphabet)
True
(where orig
is simply your original code wrapped into a function).