【发布时间】:2014-06-29 02:06:28
【问题描述】:
我想知道(在 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
有谁知道最好的方法?
【问题讨论】:
-
值得注意的是,这个问题中的分区概念与one common definition of a "partition of a set" 中的a different question 不同。相反,这个问题是在询问如何在 n 个对象的有序列表中迭代 (n-1) 选择 k 个可能的方式来选择 k 个切点。
标签: python list loops iteration