使用itertools获取set python的所有分区

时间:2017-03-09 20:36:45

标签: python itertools

如何获取一组的所有分区?

例如,我有数组[1, 2, 3]。我需要[[1], [2], [3]], [[1], [2, 3]], [[2], [1,3]], [[3], [1, 2]], [[1, 2, 3]]

现在,我写了这段代码:

def neclusters(S, K):
    for splits in itertools.combinations(range(len(S)), K):
       yield np.split(S, 1 + np.array(splits))

但该代码不会返回[[2],[1,3]]

我可以采用原始集合的所有排列并在其上运行此代码。但这可以变得更容易吗?

2 个答案:

答案 0 :(得分:0)

我写这篇文章很有趣:

def partition(a_list):
    yield [[x] for x in a_list]   
    for i in range(1, len(a_list) + 1):
        _l = a_list[:]
        yield [_l.pop(i-1), _l]
    yield a_list

my_list = [1, 2, 3]
print list(partition(my_list))

#or

for p in partition(my_list):
    print p

答案 1 :(得分:-1)

 dateA='2016-11-21'
 hdfs dfs -ls -t | awk '{if($6 -ge dateA) print $8;}'

检查这个