擅长:python、mysql、java
<p>这是我能想到的最简单、最具Python性的解决方案:</p>
<pre><code>def partition(alist, indices):
return [alist[i:j] for i, j in zip([0]+indices, indices+[None])]
</code></pre>
<p>如果输入非常大,那么迭代器解决方案应该更方便:</p>
<pre><code>from itertools import izip, chain
def partition(alist, indices):
pairs = izip(chain([0], indices), chain(indices, [None]))
return (alist[i:j] for i, j in pairs)
</code></pre>
<p>当然,还有非常非常懒的解决方案(如果您不介意获取数组而不是列表,但无论如何您可以将它们还原为列表):</p>
<pre><code>import numpy
partition = numpy.split
</code></pre>