我正在尝试获取字符串的所有字母大小写排列,并将它们添加到一个列表中,如下所示:
allperm('an') should produce:
['an', 'aN', 'An', 'AN']
但我的输出是多个列表:
['a', 'n']
['a', 'N']
这是我当前的代码
def allperm(password):
n = len(password)
#2^n permuations
max = 1 << n
#lowercase password (base)
password = password.lower()
#get all permutations
for i in range(max):
perm = [k for k in password]
for j in range(n):
if (((i >> j) & 1) == 1):
perm[j] = password[j].upper()
#add to list
temp = ""
for i in perm:
temp += i
return(temp)
您可以zip
将密码的小写字母与大写字母一起使用,并将其传递itertools.product
给生成所需的排列:
from itertools import product
def allperm(password):
return list(map(''.join, product(*zip(password.lower(), password.upper()))))
这样allperm('an')
返回:
['an', 'aN', 'An', 'AN']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句