下面是一个生成器,可以创建由多个字符串中的一个字符组成的所有组合:
('ab', 'cd', 'ef') => 'ace', 'acf', 'ade', 'adf', 'bce', 'bcf', 'bde', 'bdf'.
然而,我想知道这是否可以用更多的Pythonic来完成。
# Example input data
t = ('ab', 'cd', 'ef')
# Recursive generator
def comb(t):
if t:
for c in t[0]:
for s in comb(t[1:]):
yield c + s
else:
yield ''
# Test of generator
for r in comb(t):
print(r)
答案 0 :(得分:8)
您可以使用itertools.product
:
>>> from itertools import product
>>> lis = ('ab', 'cd', 'ef')
for p in product(*lis):
print "".join(p)
...
ace
acf
ade
adf
bce
bcf
bde
bdf