从给定字母生成长度为n的所有字符串

问题描述 投票:-4回答:1

因此给定字母a,bn=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。

提前感谢!

python python-3.x string itertools
1个回答
0
投票

该调用在理论上是有效的,但是可能的字符串数量随着n呈指数增长。您可以创建一个懒惰的生成器:

all_ = map(''.join, product('RPS', repeat=20))

>>> next(all_)
'RRRRRRRRRRRRRRRRRRRR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRP'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRS'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPP'
© www.soinside.com 2019 - 2024. All rights reserved.