python - 字母大小写排列
问题描述
我正在尝试获取字符串的所有字母大小写排列并将它们添加到一个列表中,如下所示:
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']
推荐阅读
- python - 如何在python中去除图像中的噪声
- angular - 如何解决错误:发现模块的元数据版本不匹配版本 4,预期为 3
- oracle - 使用多个线程在 Spring Boot 批处理中进行预处理
- python-3.x - 数据框列的Pyspark并行循环
- amazon-web-services - 如何以编程方式从账户 ID 获取 AWS 账户详细信息?
- c# - 源 IQueryable 的提供程序未实现 IAsyncQueryProvider
- apache-spark - 火花执行期间的运行时应用程序日志记录
- nginx - Nginx 与 Apache 代理通行证
- node.js - NPM - Browserify“'import'和'export'可能只出现在'sourceType:module'”
- java - 文件构造函数无法读取 RestFull Web 服务中的文件