擅长:python、mysql、java
<p><code>itertools.product</code>接受可以使用的<code>repeat</code>关键字:</p>
<pre><code>In [92]: from itertools import product
In [93]: word = "L0B7B0B5"
In [94]: subs = product("68", repeat=word.count("B"))
In [95]: list(subs)
Out[95]:
[('6', '6', '6'),
('6', '6', '8'),
('6', '8', '6'),
('6', '8', '8'),
('8', '6', '6'),
('8', '6', '8'),
('8', '8', '6'),
('8', '8', '8')]
</code></pre>
<p>那么一个相当简洁的替换方法是使用string<code>replace</code>方法执行一个缩减操作:</p>
^{pr2}$
<p>另一种方法,使用<code>itertools</code>中的多个函数:</p>
<pre><code>In [90]: from itertools import chain, izip_longest
In [91]: subs = product("68", repeat=word.count("B"))
In [92]: [''.join(chain(*izip_longest(word.split('B'), sub, fillvalue=''))) for sub in subs]
Out[92]:
['L0676065',
'L0676085',
'L0678065',
'L0678085',
'L0876065',
'L0876085',
'L0878065',
'L0878085']
</code></pre>