擅长:python、mysql、java
<p>我不知道itertool中是否有一个函数可以实现这一点。但我总觉得做这种事很有趣,也是一种很好的锻炼。因此,有一个使用递归生成器的解决方案:</p>
<pre><code>def generate(liste):
if len(liste) == 1:
yield [liste]
else:
for i in generate(liste[1:]):
yield [[liste[0]]]+i
yield [ [liste[0]]+i[0] ] + i[1:]
if __name__ == "__main__":
for i in generate (["X","Y","2"]):
print "test : " + str(i)
if len(i) == 1:
print "".join(i[0])
else:
print reduce(
lambda left, right : left + "".join(right),
i,
"")
</code></pre>