作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据任意数量的索引将列表拆分成多个部分的最佳方法是什么?例如。给出下面的代码
indexes = [5, 12, 17]
list = range(20)
返回这样的东西
part1 = list[:5]
part2 = list[5:12]
part3 = list[12:17]
part4 = list[17:]
如果没有索引,它应该返回整个列表。
最佳答案
这是我能想到的最简单也是最pythonic的解决方案:
def partition(alist, indices):
return [alist[i:j] for i, j in zip([0]+indices, indices+[None])]
如果输入非常大,那么迭代器解决方案应该更方便:
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)
当然,还有非常非常懒惰的家伙解决方案(如果您不介意获取数组而不是列表,但无论如何您总是可以将它们还原为列表):
import numpy
partition = numpy.split
关于python - 根据 Python 中的一组索引将列表拆分为多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827454/
我是一名优秀的程序员,十分优秀!