def comb(first_str, second_str):
if not first_str:
yield second_str
return
if not second_str:
yield first_str
return
for result in comb(first_str[1:], second_str):
yield first_str[0] + result
for result in comb(first_str, second_str[1:]):
yield second_str[0] + result
from itertools import combinations
def dashed_comb(base_str, exp_len):
for comb in combinations(range(exp_len), exp_len-len(base_str)):
letters = iter(base_str)
yield ''.join('-' if x in comb else letters.next()
for x in xrange(exp_len))
递归的(此处提供,因为它比基于itertools的速度快两倍):
^{pr2}$
样本输出:
>>> for dc in dashed_comb('AAB', 5):
... print dc
...
...
AAB
-A-AB
-AA-B
-AAB-
A AB
A-A-B
A-AB-
AA B
AA-B-
AAB
以下是递归生成器实现:
带字符串的输出:
^{pr2}$递归的(此处提供,因为它比基于itertools的速度快两倍):
^{pr2}$样本输出:
相关问题 更多 >
编程相关推荐