因此给定字母a,b
和n=3
,我想获得以下字符串:aaa,aab,aba,abb,bbb,bba,bab,baa
。
我尝试使用itertools.product
,但是当n
大于the number of letters
时我无法使用它。
all_ = [''.join(x) for x in itertools.product('RPS', repeat=n)]
上面的代码在n为1,2和3时有效,但不适用于较大的数字,例如n = 20。
提前感谢!
该调用在理论上是有效的,但是可能的字符串数量随着n
呈指数增长。您可以创建一个懒惰的生成器:
all_ = map(''.join, product('RPS', repeat=20))
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRP'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRS'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPP'