我的意图是返回所有长度可变的大写字母和小写字母的可能组合
例如: foo(3)将返回a-Z中长度为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】、【aaac】、【aaad】、【aaba】、【aabb】、【aabc】、【aabd】、【aaca】、【aacb】、【aacc】、【aada】、【aadb】、【aadc】、【aadd】、【abaa】、【aaac】、【aacd】、【aacd】、【aadb】、【aadc】、【aadd】、【abaa】、【abaa】、【abab】、【abab】、【abac】、【acac】、【acad】、【acba】、【acbb】、【acbc】、【acbc】、【acca】、【accc】、【acca】、【d、acda、acdb、acdc、acdd、adaa、adab、adac、adad、adba、adbb、adbc、adbd、adca、adcb、adcc、adcd、adda、addb、addc、addd、baaa、baab、baac、baad、baba、baba、baca、bacb、bacc、bacd、bada、badb、badc、badd、bbaa、bbab、bbab、bbac、bbbabbbd、bbca、bbcb、bbcc、bbcd、bbda、bbdb、bbdc、bbdd、bcaa、bcab、bcac、bcad、bcba、bcbb、bcbc、bcbd、bcca、bccb、bccc、bccd、bcda、bcdb、bcdc、bcdd、bdaa、bdab、bdac、bdad、bdba、bdbc、bdda、bdca、bdcc、bdcd、bdda、bddb、bddc、caaa、caac“caad”、“caba”、“cabb”、“cabb”、“cabc”、“cabd”、“caca”、“cacb”、“cacc”、“cacd”、“cadd”、“cadb”、“cadc”、“cadd”、“cbaa”、“cbac”、“cbad”、“cbba”、“cbbb”、“cbbc”、“cbbd”、“cbca”、“cbcb”、“cbcc”、“cbcd”、“cbda”、“cbda”、“cbdb”、“cbdb”、“cbdc”、“cbdd”、“ccaa”、“ccab”、“ccac”、“ccad”、“ccba”、“ccbb”、“ccbc”、“ccbd”、“ccca”、“ccca”、“cccc”、“cccd”、“ccda”、“ccdb”、“ccdb”、“CCC”dc、ccdd、cdaa、cdab、cdac、cdad、cdba、cdbb、cdbc、cdbd、cdca、cdcb、cdcc、cdda、cddb、cddc、cddd、daaa、daab、daac、daad、daba、dabb、dabc、dabc、dabd、dacd、dada、dadb、dadc、dadc、dadd、dbaa、dbab、dbac、dbad、dbba、dbba、dbba,‘dbcc’、‘dbcd’、‘dbda’、‘dbdb’、‘dbdc’、‘dbdd’、‘dcaa’、‘dcab’、‘dcac’、‘dcba’、‘dcbb’、‘dcbc’、‘dcca’、‘dccb’、‘dccc’、‘dccd’、‘dcda’、‘dcdb’、‘dcdc’、‘dddd’、‘ddba’、‘ddbb’、‘ddbc’、‘ddbc’、‘ddcc’、‘ddcd’、‘ddda’、‘dddb’、‘dddc’、‘dddd’] '
您可以使用
itertools
和ascii_letters
进行以下操作:总长度为22000+
作为一项功能:
如果您还需要
['aaa', 'aab', ...]
,请使用itertools.combinations_with_replacement()
相关问题 更多 >
编程相关推荐