首页 > 解决方案 > 如何生成给定起点的组合?

问题描述

假设我想生成长度为 2 的字母数字字符的所有组合。就像这样 aa,ab,ac,...,az,aA,aB,...,aZ,a1,a2,...,a9,ba,bb,... so on ,我也想恢复给定一个起点。例如,如果我说bb程序应该生成之后的组合,bb 那么 bb,bc,bd,.... so on 是否有 python 库可以做到这一点?如果不是,我该怎么做?我正在寻找这样的东西

k = 2 #length of the string in combination
s = 'bb' # starting point

generateCominations(s,k)

任何帮助,将不胜感激。

标签: python

解决方案


使用combination_with_replacement

试试下面的代码:

from itertools import combinations_with_replacement
import string

def generateCominations(s,k):
  alphnum=list(string.ascii_letters + string.digits)
  combo=combinations_with_replacement(alphnum,k)
  result=[''.join(t) for t in combo]
  #print(result)
  return result[result.index(s):]

print (generateCominations('bb',2))

输出:

['bb', 'bc', 'bd', 'be', 'bf', 'bg',..., '99']

然而,它是一个组合,所以'ab'='ba'所以它返回一个'ab''ba'两个都不返回

如果你想要两者都使用排列


推荐阅读