<p>为一个<em>小的</em>数据关联规则矿实现一个玩具<a href="http://en.wikipedia.org/wiki/Apriori_algorithm" rel="nofollow">Apriori algorithm</a>,我需要一个函数来返回所有子集。在</p>
<p><a href="http://en.wikipedia.org/wiki/Subset" rel="nofollow">subsets</a>的长度由参数<code>i</code>给出。<strong>我需要将这个函数推广到任何<code>i</code>。</strong>对于<code>i</code>1或2的情况是微不足道的,并且可以看到一般的模式:长度为<code>i</code>的元组列表,其中施加顺序以防止重复。在</p>
<pre><code>def all_subsets(di,i):
if i == 1:
return di
elif i == 2:
return [(d1,d2) for d1 in di for d2 in di if d1 < d2]
else:
return [ ... ]
</code></pre>
<p>我如何以简洁的方式概括这个<code>i</code>嵌套循环模式,比如使用列表理解、生成器或一些“函数式编程”概念?在</p>
<p>我在想一些函数列表,但我真的不知道如何才能泛化<code>i</code>嵌套循环。任何提示或完整答案都将被视为非常棒的。在</p>