在Python中,如何创建可变长度组合或排列?

Leo*_*eon 5 python combinations list-comprehension python-3.x

假设我有一个名为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]
Run Code Online (Sandbox Code Playgroud)

等等等等?我正在努力工作.我似乎无法使用itertools.combinbinations或排列,因为我需要知道参数大小,我似乎不能使用itertools.products,因为这将从列表列表中的每一个看起来像这样最少一个参数[[1],[2],[3],[4],[5]].特别感谢一个衬里和理解.

如果我想将它们全部加在一起那么在帮助方面要求太多吗?;-)

hiv*_*ert 12

怎么样:

(x for l in range(2, len(arr)) for x in itertools.combinations(arr, l))
Run Code Online (Sandbox Code Playgroud)

要么

[x for l in range(2, len(arr)) for x in itertools.combinations(arr, l)]
Run Code Online (Sandbox Code Playgroud)

如果你需要清单.

这相当于以下嵌套循环

res = []
for l in range(2, len(arr)):
    for x in itertools.combinations(arr, l):
        res.append(x)
return res
Run Code Online (Sandbox Code Playgroud)