字母大小写排列

2024-04-26 11:32:56 发布

您现在位置: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)

Tags: 字符串inan列表for字母rangepassword
1条回答
网友
1楼 · 发布于 2024-04-26 11:32:56

您可以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']

相关问题 更多 >