Python程序:获取字符串所有长度为r的排列组合

Python程序:获取字符串所有长度为r的排列组合

假设有一个字符串s和一个数字r。我们要展示在s中长度为r的所有排列组合。我们可以调用permutations()函数来获取所有排列组合。该函数可以在itertools库中找到。

那么,如果输入是s = “HELLO” r = 3,则输出将是

>['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL',
'ELO', 'ELH', 'ELL','ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE',
'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL',
'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']

解决此问题,我们将遵循以下步骤 −

  • vals:一个包含s所有长度为r的排列组合的列表
  • res:一个新列表
  • 对于vals中的每个x,执行以下操作
    • 将字符列表x转换为字符串,并插入到res中
  • 返回res

示例

让我们看下面的实现以更好地理解

from itertools import permutations
   def solve(s, r):
   vals=list(permutations(s,r))
   res=[]
   for x in vals:
      res.append(''.join(x))
   return res

s = "HELLO"
r = 3
print(solve(s, r))

输入

"HELLO", 2

输出

['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE',
'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO',
'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE',
'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH',
'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL',
'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程