擅长:python、mysql、java
<p>我的解决方案和伊尔·比马的类似</p>
<pre><code>>>> def parts(list_, indices):
... indices = [0]+indices+[len(list_)]
... return [list_[v:indices[k+1]] for k, v in enumerate(indices[:-1])]
</code></pre>
<h2>替代方法</h2>
<p>如果您愿意稍微改变输入索引的方式,从绝对索引改为相对索引(即从<code>[5, 12, 17]</code>改为<code>[5, 7, 5]</code>),则下面的内容也将为您提供所需的输出,而不会创建中间列表。</p>
<pre><code>>>> from itertools import islice
>>> def parts(list_, indices):
... i = iter(list_)
... return [list(islice(i, n)) for n in chain(indices, [None])]
</code></pre>