2015-04-02 102 views
1

我想创建一个包含python子列表的列表;就像一个集合的正确子集。例如,从列表中创建子列表

A = [1, 2, 3, 4] 

Desired List = [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4], [1, 2, 3], [1, 2, 4], [2, 3, 4]] 

谢谢!

+1

为什么你没有任何大小为0或1的子集?这是一个“我想做这个事情”的问题,还是一个“我想通过做这件事来学习”的问题? – user2357112 2015-04-02 22:04:35

回答

1

因为它似乎你只想大小2个或更多的子集:

from itertools import combinations, chain 
A = range(1, 5) 
list(chain(*(combinations(A, r) for r in range(2, len(A))))) 
# [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)] 

如果你希望所有的真子集,只是改变range(2, len(A))range(len(A))