因此,我目前正在使用以下方式将字符序列生成为字符串:
def nth(lists, num):
res = []
for a in lists:
res.insert(0, a[num % len(a)])
num //= len(a)
return res
def generate_page(chars, length, iteration):
result = nth([chars] * length, iteration)
return "".join(result)
length = 15
seed = 16
number = generate_page('0123456789ABC', length, seed)
但是我无法确定的是,如果我知道每个字符要多少,我将如何生成一个字符序列。
例如,假设我要生成一个序列,该序列具有1个“ A”,3个“ B”和1个“ C”,如何获得“ ABBBC”的任何排列?
我想我只想串联一个我知道我想要的金额的列表,然后像下面这样加乱它们:
A = 1
B = 3
C = 1
listOfCharacters = ["A"]*A + ["B"]*B + ["C"]*C
>>> ['A', 'B', 'B', 'B', 'C']
random.seed(1)
listOfCharacters = random.shuffle(listOfCharacters)
>>> None
listOfCharacters = ''.join(listOfCharacters)
>>> TypeError
但是现在很明显正在收到TypeError,甚至不确定这是否是检索所有排列而不用种子重复的最佳途径。
只是这样做:
import itertools
match = 'ABBBC' #string of letter combinations to match.
permutations = itertools.permutations(match) #get all
all_combos = list({''.join(per) for per in permutations}) #use sets to remove duplicates
的值all_combos
是所有可能组合的列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句