Pythonで、可変長の組み合わせまたは順列を作成するにはどうすればよいですか?

Source python python-3.x combinations list-comprehension

arr = [1,2,3,4]という配列があるとしましょう。

最小2つの引数で可能なすべての組み合わせを生成するにはどうすればよいですか?
[1,2]
[1,3]
[1,4]
[1,2,3]
[1,2,4]
[1,2,3, 4]
[2,3]
[2,4]

などなど?私が試していることは何も機能しません。引数のサイズを知る必要があるため、itertools.combinationsまたはpermutationsを使用できないようです。また、この[[1],[2],[3],[4],[5]]のようなリストのリストのそれぞれから少なくとも1つの引数を取るため、itertools.productsを使用できないようです。ワンライナーと内包表記に感謝します。

それらをすべて一緒に追加したい場合、それは助けの観点から尋ねるには多すぎるでしょうか? ;-)
推奨答え
どうですか:
(x for l in range(2, len(arr)) for x in itertools.combinations(arr, l))

または
[x for l in range(2, len(arr)) for x in itertools.combinations(arr, l)]

リストが必要な場合。

これは、次のネストされたループに相当します
res = []
for l in range(2, len(arr)):
    for x in itertools.combinations(arr, l):
        res.append(x)
return res
その他答え 1
From:http://wiki.python.org/moin/Powerful%20Python%20One-Liners以下を使用してすべてのサブセットを作成し、長さが2未満のサブセットを絞り込みます。
f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))]

print [k for k in f([1,2,3,4]) if len(k) >1]

関連記事

Gruntjs:ファイルをコピーするときにテンプレートを置き換える
Autofixture-余りのあるfloat、double、またはdecimalを作成します
2つの辞書を組み合わせて、文字列値を連結しますか?
prawでは、コメントの本文を印刷しようとしていますが、空のコメントが表示された場合はどうなりますか?
実行時にPythonモジュールをインストールしてインポートする方法は?