Мое намерение - вернуть все возможные комбинации строчных и прописных букв с переменной длиной.
Пример: foo (3) вернет все комбинации из aZ длиной 3.
Я знаю, как создать функцию, которая возвращает все с фиксированной длиной, но вам придется изменить код, чтобы изменить длину. Как мне этого добиться? Большое спасибо
Редактировать: я получил его на работу, моя рекурсия была ошибка. Вот код для возврата списка всех комбинаций:
def test(charNumber, array):
if charNumber == 0:
arr2 = []
for s in range(len(array)):
#alp is an array with all characters I want to use, so I can easily
#add characters if I want to
for i in range(len(alp)):
arr2.append(array[s] + alp[i])
return arr2
else:
arr2 = []
for s in range(len(array)):
for i in range(len(alp)):
arr2.append(array[s] + alp[i])
return test(charNumber-1, arr2)
def prArr():
print(test(3, ['']))
Обратите внимание, что это печатает на один символ больше введенного значения, и, как вы видите, вы должны предоставить массив с одной пустой строкой.
Вывод: ´´´ ['aaaa', 'aaab', 'aaa c', 'aaad', 'aaba', 'aabb', 'aab c', 'aabd', 'aaca ',' aacb ',' aa cc ',' aacd ',' aada ',' aadb ',' aad c ',' aadd ',' abaa ',' abab ',' aba c ' , 'abad', 'abba', 'abbb', 'abb c', 'abbd', 'abca', 'abcb', 'ab cc', 'abcd', 'abda', 'abdb' , 'abd c', 'a bdd', 'acaa', 'acab', 'aca c', 'acad', 'acba', 'acbb', 'acb c', ' acbd ',' acca ',' accb ',' a ccc ',' accd ',' acda ',' acdb ',' acd c ',' acdd ',' adaa ',' adab ',' ada c ',' adad ',' adba ',' adbb ',' adb c ',' adbd ',' adca ',' adcb ',' ad cc ',' adcd ',' adda ',' addb ',' add c ',' a ddd ',' baaa ',' baab ',' baa c ',' baad ',' baba ',' babb ',' bab c ',' babd ',' baca ',' bacb ',' ba cc ',' bacd ',' bada ',' badb ',' bad c ',' badd ',' bbaa ', 'bbab', 'bba c', 'b плохой »,« bbba »,« bbbb »,« bbb c »,« bbbd »,« bbca »,« bbcb »,« bb cc »,« bbcd »,« bbda »,« bbdb »,« bbd c ',' b bdd ',' bcaa ',' bcab ',' bca c ',' bcad ',' bcba ',' bcbb ',' bcb c ',' bcbd ' , 'bcca', 'bccb', 'b ccc', 'bccd', 'bcda', 'bcdb', 'bcd c', 'bcdd', 'bdaa', 'bdab', 'bda c ',' bdad ',' bdba ',' bdbb ',' bdb c ',' bdbd ',' bdca ',' bdcb ',' bd cc ',' bdcd ',' bdda ', 'bddb', 'bddc', 'b ddd', 'caaa', 'caab', 'caa c', 'caad', 'caba', 'cabb', 'cab c ',' cabd ',' caca ',' cacb ',' ca cc ',' cacd ',' cada ',' cadb ',' cad c ',' cadd ',' cbaa ', «cbab», «cba c», «cbad», «cbba», «cbbb», «cbb c», «cbbd», «cbca», «cbcb», «cb cc», « cbcd ',' cbda ',' cbdb ',' cbd c ',' cbdd ',' ccaa ',' ccab ',' cca c ',' ccad ',' ccba ', 'ccbb', 'ccb c', 'ccbd', 'ccca', 'cccb', 'cccc', 'cccd', 'ccda', 'ccdb', 'ccd c', 'ccdd ',' cdaa ',' cdab ',' cda c ',' cdad ',' cdba ',' cdbb ',' cdb c ',' cdbd ',' cdca ',' cdcb ',' cd cc ',' cdcd ',' cdda ',' cddb ',' cdd c ',' cddd ',' daaa ',' daab ',' daa c ',' daad ',' daba ',' dabb ',' dab c ',' dabd ', «Дака», «ДаКБ», «Да cc», «ДаКД», «Дада», «Дада», «папа c», «папа», «DBAA», «DBA», «DBA c ',' dbad ',' dbba ',' dbbb ',' dbb c ',' dbbd ',' dbca ',' dbcb ',' db cc ',' dbcd ',' dbda ',' dbdb ',' dbd c ',' d bdd ',' dcaa ',' dcab ',' dca c ',' dcad ',' dcba ',' dcbb ',' dcb c ' , 'dcbd', 'dcca', 'dccb', 'd ccc', 'dccd', 'dcda', 'dcdb', 'dcd c', 'dcdd', 'ddaa', 'ddab' , 'dda c', 'ddad', 'ddba', 'ddbb', 'ddb c', 'ddbd', 'ddca', 'ddcb', 'dd cc', 'ddcd', 'ddda', 'dddb', 'dddc', 'd ddd'] ´´´