遍历Python中的分区

发布于 2021-01-29 14:11:01

我想知道(在Python中)迭代给定大小的列表的分区的最佳方法是什么。

举例来说,我们有列表[1,2,3,4,5],需要k=3分区。一个糟糕的方法是这样写:

lst = [1,2,3,4,5]
for i in range(1,len(lst)):
    for j in range(i+1, len(lst)):
        print lst[:i], lst[i:j], lst[j:]

这给

[1], [2], [3,4,5]
[1], [2,3], [4,5]
...
[1,2,3], [4], [5]

但是,如果我以后想遍历k=4分区,则必须添加for循环嵌套级别,这在运行时无法完成。理想情况下,我想写一些类似的东西:

for part in partitions([1,2,3,4,5], k):
    print part

有谁知道最好的方法吗?

关注者
0
被浏览
127
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果没有,我会使用与您相同的想法pairwise

    from itertools import combinations
    
    def partitions(items, k):
    
        def split(indices):
            i=0
            for j in indices:
                yield items[i:j]
                i = j
            yield items[i:]
    
        for indices in combinations(range(1, len(items)), k-1):
            yield list(split(indices))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看